socket 发送过程中出错! 我是作为client的,但是我只在发送前判断了socket.Connected,如果为false则再socket.connect()但就在connect()时出错。或者是我判断socket连接中断的方法不对!请指教! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 要等ACK TIMEOUT过了之后,才能再连接 如何判断Timeout是否过了呢?另ACK是什么? 可能是主机发送的消息,接受端没有相应的receive 这个问题我碰到过,是socket服务端已经断开了与你刚才建立的连接.所以你在客户端再建立连接(用原来的环境)没用了,必须和服务端协议重新建立连接,或者通过周密的逻辑判断来修正你的代码.这个问题应该不难解决. :helysan(真水无香)你说的对,但是我如何在“发送前”来判断服务端是否断开了我的连接呢? 自己解决了: (哪位还有更好的办法,请指教)// 单独开启读取,以阻塞式读取判断服务端是否断开。socketUC.Receive(bufRes, 16, SocketFlags.None);// 如果接收了,但没有收到数据if (bufRes[0] == 0){//锁一下,避免其它线程操作 lock (socketUC) { // 关闭这个连接 socketUC.Shutdown(SocketShutdown.Both); socketUC.Close(); // 再建一个新的连接 socketUC = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); // 设置发送超时 socketUC.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 1000); // 用新的实例连接 socketUC.Connect(epUC); }} [VS扩展开发相关]如何操作代码编辑框内光标的位置? C#中,如何利用BitBlt、CachedBitmap来提高GDI+绘图性能的问题?? C# 前台怎么去调用后台的方法 求判断重复算法!!! 我的VS 2008 代码自动提示有问题 static void Main(string[] args) 给args赋值问题! 求正则表达式,马上给分!在线等! 哈夫曼编码问题,简单的一道题,愿意帮忙的进 问一个菜鸟问题?? 新手 运行报错“未将对象引用设置到对象的实例”,求大神解,谢谢 socket通讯中,客户端被服务器端断开,客户端怎样才能得到这个事件或在哪儿加委托? 光标定位的问题
你说的对,但是我如何在“发送前”来判断服务端是否断开了我的连接呢?
// 单独开启读取,以阻塞式读取判断服务端是否断开。
socketUC.Receive(bufRes, 16, SocketFlags.None);
// 如果接收了,但没有收到数据
if (bufRes[0] == 0)
{//锁一下,避免其它线程操作
lock (socketUC)
{ // 关闭这个连接
socketUC.Shutdown(SocketShutdown.Both);
socketUC.Close();
// 再建一个新的连接
socketUC = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
// 设置发送超时 socketUC.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 1000);
// 用新的实例连接
socketUC.Connect(epUC);
}
}