好的,这就是事情的进展:
[Server] Start
[Server] Socket.AcceptConnection
[Client] Start
[Client] Socket.Connect
[Server] Receive //blocking
[Client] Send
[Server] Print
[Server] Receive
[Client] Close socket
Run Code Online (Sandbox Code Playgroud)
有没有办法知道客户端什么时候关闭连接?我目前正在使用MSDN上描述的假数据包技巧,我在一个单独的线程上执行此操作
[Server] socket.Send(byte[], 0,0);
Run Code Online (Sandbox Code Playgroud)
我检查它是否抛出任何错误,但它没有,即使客户端关闭套接字.
PS我正在思考,如果我在服务器端(TCP)和客户端的TcpClient上有一个套接字,可能会有问题吗?
谢谢.
根据Socket.Connected的文档:
Connected属性的值反映了最近操作时的连接状态.如果需要确定连接的当前状态,请进行非阻塞,零字节发送调用.如果调用成功返回或抛出WAEWOULDBLOCK错误代码(10035),则套接字仍然连接; 否则,套接字不再连接.
请注意,就我所见,您当前的通话是阻止通话 - 您需要根据该文档进行非阻塞通话.
归档时间: |
|
查看次数: |
2524 次 |
最近记录: |