在.net framework1.1下写的服务器端,客户端是GPRS专线.服务器端监听之后,若有gprs连接上来,endaccept,插入arraylist中,beginreceive.但我用netstat -an 察看连接数时发现了异常.有几个连接是syn_received状态,并且很快就消失了.造成用netstat看到的连接数跟我链表中的数量不一致.按照道理,我endaccept应该就是建立了连接,客户端断开,不管是多久断开的,我在receive回调函数中应该能收到断开的异常或者消息,但我根本没收到:(
困惑了很久,不知道是什么原因,使用APN为cmnet的gprs连接时,就没有这种情况,不知道大家有没有遇到这种情况.我暂时解决的方法就是10分钟没有数据的收发,我就断开连接.但这样做还是太武断了.用的是win2000操作系统
困惑了很久,不知道是什么原因,使用APN为cmnet的gprs连接时,就没有这种情况,不知道大家有没有遇到这种情况.我暂时解决的方法就是10分钟没有数据的收发,我就断开连接.但这样做还是太武断了.用的是win2000操作系统
解决方案 »
- 请教关于MDI子窗口的最大化问题
- 用户自定义控件位置
- 如何获得所有catch到的Exception
- 关于picturebox大小调整的问题?
- 请高手指教,如何写这样的视图并且如何绑定到dataview控件!
- 粗心大意啊,上个帖子写错了,winform使用SqlConnection遇到重启sqlserver服务竟然一直抛出错误,是重启哦重启。。。
- 用程序创建一个SQL server2000数据库
- C#编写一个USB接口通信的程序
- 求new/open/save/copy/cut此类的编辑icon
- VS.NET IDE出毛病了
- 工具条中添加的toolStripComboBox1为何没有DataSource
- 当焦点在dataGrid的DataGridTextBoxColumn时按"ESC"键关闭窗体,一直找不到办法请高手帮忙!!
client.Connect(anEndPoint);// 检查状态代码
bool blockingState = client.Blocking; // 暂存客户端的状态
try
{
byte [] tmp = new byte[1]; client.Blocking = false; // 使用无阻塞发送
client.Send(tmp, 0, 0); // 发送
Console.WriteLine("Connected!"); // 发送成功,则连接正常
}
// 如果抛出异常,进行检测
catch (SocketException e)
{
// 10035 == WSAEWOULDBLOCK 连接正常,但是发送被客户端阻塞
if (e.NativeErrorCode.Equals(10035))
Console.WriteLine("Connected!");
else
{ // 客户端已经断开连接
Console.WriteLine("Disconnected: error code {0}!", e.NativeErrorCode);
}
}
finally
{ // 恢复原来的状态
client.Blocking = blockingState;
} Console.WriteLine("Connected: {0}", client.Connected);
另外我还想问一下,明明操作系统底层已经知道断开了,netstat里也没有了这个连接,为什么我会收不到呢,是socket没有做好呢,还是什么其它的原因以至于我没收到断开的信息?下班有点事情出去了,没来得及回复。
一。约定一个小数据包,作为服务器客户端之间的通信包。
二。模拟TCP底层的保活定时器,发送数据来探测