Socket.Disconnect(bool reuse)
使程序能够重用套接字。我的问题是:
如果我们决定重用套接字,那意味着它会重用相同的本地端点吗?它会保留该套接字的端口还是只是(我不相信它)保存所有对象资源?
如果它实际上只保存了资源,它们是否会分配给下一个连接,如果是,那么发送/接收缓冲区会自动刷新还是有某种方式刷新它们? Socket.ShutDown(ShutDown.Both)
在断开连接时会为我做这件事吗?
我会在什么情况下使用Socket.Disconnect(false)
?如果所有目的都是为了重用套接字,那么这将授予我什么?
答案 0 :(得分:5)
如果reuse = false,套接字将在关闭后自动处理。作为EndPoint和Buffer大小的所有设置都不会重置为默认值,但您可以根据需要进行更改。用户决定更改连接端口。您只需关闭套接字,更改端口并再次连接套接字,而无需创建新套接字并重新设置它。
Socket.Shutdown只是禁用发送/接收/两者;不要断开插座。但是,对于新的传入/传出数据会发生这种情况,因此缓冲区将被正常刷新。最好在断开连接之前调用它,以确保在断开连接时发送所有数据并且没有数据被接收。
回到1的示例。设置您只需要更改端口。您不想再次创建套接字,将套接字的所有参数再次配置为事件和缓冲区等。它消耗时间和资源,因此最好重用已有的套接字。