未显式关闭的套接字会发生什么情况?如果我创建并连接一个具有相同参数的新套接字会怎样?

本文关键字:套接字 一个 参数 创建 什么情况 如果 连接 | 更新日期: 2023-09-27 18:04:44

目前我正在处理一段遗留的c#代码,它做了以下操作(为简洁起见进行了修改):

var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint ipEndPoint = new IPEndPoint(ipAddr, PortNumber);
clientSocket.Connect(ipEndPoint);
clientSocket.Receive(parameters);
clientSocket.Send(parameters);

ipAddress和Portnumber通常是相同的(它们很少改变,但它们可以并且偶尔会改变)。注意,没有Socket。近,套接字。断开连接,插座。

另外,服务器端代码除了通过if(socket.Poll()) {socket.accept();…}循环。它不会关闭或断开连接或关机。

假设:如果我调用这个例程一次(记住套接字没有关闭)会发生什么?

如果我调用这个例程十次,每次调用之间间隔一到两秒,会发生什么?

我应该"关闭"这个套接字吗?如果是,怎么做?

提前感谢!

未显式关闭的套接字会发生什么情况?如果我创建并连接一个具有相同参数的新套接字会怎样?

由于您在启动连接时没有指定本地端口,因此当您建立连接时,操作系统将为您选择一个。因此,每次调用此函数时,都将获得与远程服务器的新TCP连接,每个连接都具有不同的本地端口。