我有一个监听套接字连接的服务器:
public class Server
{
private Socket _serverSocket;
public Server()
{
_serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
_serverSocket.Bind(new IPEndPoint(IPAddress.Any, 1234));
_serverSocket.Listen(1);
}
public void Start()
{
_serverSocket.BeginAccept(HandleAsyncConnectionMethod, null);
}
public void Stop()
{
//????? MAGIC ?????
}
//... rest of code here
}
关闭套接字的正确(干净)方法是什么?
调用是否足够:
_serverSocket.Disconnect(true);
在 Stop() 方法中?或者是否需要进行其他工作才能彻底关闭连接?
最佳答案
TCP 连接终止正确涉及四次握手。您希望两端都通知对方他们正在关闭,然后确认对方的关闭。
维基百科解释了这个过程:http://en.wikipedia.org/wiki/Transmission_Control_Protocol#Connection_termination
这篇文章解释了如何在 C# 中实现它:http://vadmyst.blogspot.com/2008/04/proper-way-to-close-tcp-socket.html
关于c# - 停止监听套接字的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/452327/