WinCE for Socket问题,超急用呀,妈的!

KJ_Wang 2009-12-21 04:52:30
private void RunConnectRemoteServer()
{
while(true)
{
Thread.Sleep(2000);
if (!remoteServer.Connected)
{
try
{
//remoteServer = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
remoteServer.Connect(remoteEndPoint );
lstInfo.Items.Add("当前时间:"+ DateTime.Now.ToString()+" 服务器端:"+remoteServer.RemoteEndPoint.ToString()+" 已经连接上......");
tempByte = 0x02;
strConnectRemoteServerStatus="0";
threadSend = new Thread(new ThreadStart(SendThread));
threadSend.Start();
threadReceive = new Thread(new ThreadStart(ReceiveThread));
threadReceive.Start();
}
catch
{

if(strConnectRemoteServerStatus=="0")
{
lstInfo.Items.Add("当前时间:"+ DateTime.Now.ToString()+" 服务器端已经断开......");
strConnectRemoteServerStatus="1";
}
remoteServer.Close();
}
}
}
}
WinCE.Net 4.2中,当我关闭服务器后,remoteServer.Connected=true,为什么?
但我在PC机中运行效果,当我关闭服务器后,remoteServer.connected=false,请高手指点指点,已经一个多星期了。TMD,老板追得要命!
...全文
191 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
vrhero 2009-12-21
  • 打赏
  • 举报
回复
Connected属性并非实时的连接状态...对WinCE来说,多数是采用无线网络连接的,相对来说检查它的连接状态远不如PC那么频繁...你需要自己检测连接状态,比如常见的是发送心跳包消息...
[Quote=引用 MSDN:]
Connected 属性获取截止到最后的 I/O 操作时 Socket 的连接状态。当它返回 false 时,表明 Socket 要么从未连接,要么已断开连接。

Connected 属性的值反映最近操作时的连接状态。如果您需要确定连接的当前状态,请进行非阻止、零字节的 Send 调用。如果该调用成功返回或引发 WAEWOULDBLOCK 错误代码 (10035),则该套接字仍然处于连接状态;否则,该套接字不再处于连接状态。
[/Quote]
cykevin 2009-12-21
  • 打赏
  • 举报
回复
职业帮顶人

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧