Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我应该在每次交易后关闭套接字(TCPIP)吗?_C#_Sockets_Tcp - Fatal编程技术网

C# 我应该在每次交易后关闭套接字(TCPIP)吗?

C# 我应该在每次交易后关闭套接字(TCPIP)吗?,c#,sockets,tcp,C#,Sockets,Tcp,我编写了一个TCPIP服务器,它实现了一个FileSystemWatcher,并用从FSW获取的新文件解析的数据填充队列 一个客户端将连接到此服务器并从队列中请求数据(任何时候都不需要其他客户端连接)。如果不存在数据,客户端将等待(1秒)并重试 客户端和服务器都是异步编写的——我的问题是:客户端应该为每个事务创建一个新套接字(在while循环内),还是保持套接字打开(在while循环外) 我会让套接字在循环之外保持打开状态,重新连接每个迭代似乎是浪费资源 我不会关闭插座。每次连接时都会有一些握手

我编写了一个TCPIP服务器,它实现了一个FileSystemWatcher,并用从FSW获取的新文件解析的数据填充队列

一个客户端将连接到此服务器并从队列中请求数据(任何时候都不需要其他客户端连接)。如果不存在数据,客户端将等待(1秒)并重试

客户端和服务器都是异步编写的——我的问题是:客户端应该为每个事务创建一个新套接字(在while循环内),还是保持套接字打开(在while循环外)


我会让套接字在循环之外保持打开状态,重新连接每个迭代似乎是浪费资源

我不会关闭插座。每次连接时都会有一些握手。

我建议您保持套接字打开,最好在服务器上阻止它,这样您就不必执行Thread.Sleep。当服务器将有一些数据时,他将向客户端发送消息

代码将如下所示

while(bCollectData)
{
   _socket.recv(...); //this line will wait for response from server
   //... process message and start another wait in the next iteration.
}
使用这种方法,您将立即获得所有消息,并避免在客户端和服务器之间发送不必要的消息(返回该服务器的消息没有数据)

while(bCollectData)
{
   _socket.recv(...); //this line will wait for response from server
   //... process message and start another wait in the next iteration.
}