gpt4 book ai didi

c# - 使用System.Net.Socket,我们如何知道远程套接字何时关闭?

转载 作者:行者123 更新时间:2023-12-02 18:09:44 25 4
gpt4 key购买 nike

好的,事情的进展是这样的:

[Server] Start
[Server] Socket.AcceptConnection
[Client] Start
[Client] Socket.Connect
[Server] Receive //blocking
[Client] Send
[Server] Print
[Server] Receive
[Client] Close socket

有什么方法可以知道客户端何时关闭连接?我目前正在使用 MSDN 上描述的假数据包技巧,在一个单独的线程上我执行了

[Server] socket.Send(byte[], 0,0);

我检查它是否抛出任何错误,但它没有,即使客户端关闭了套接字。

附注我实际上在想,如果我在服务器端(TCP)有一个套接字,在客户端有一个 TcpClient,这可能会是一个问题吗?

谢谢。

最佳答案

根据 Socket.Connected 的文档:

The value of the Connected property reflects the state of the connection as of the most recent operation. If you need to determine the current state of the connection, make a nonblocking, zero-byte Send call. If the call returns successfully or throws a WAEWOULDBLOCK error code (10035), then the socket is still connected; otherwise, the socket is no longer connected.

请注意,据我所知,您当前的调用是阻塞调用 - 您需要根据该文档进行非阻塞调用。

关于c# - 使用System.Net.Socket,我们如何知道远程套接字何时关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/913430/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com