gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 02:31:58 25 4
gpt4 key购买 nike

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

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

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

client.Connect()

while(bCollectData)
{
... communicate ...

Thread.Sleep(1000);
}

client.Shutdown(SocketShutdown.Both);
client.Close();

最佳答案

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

代码看起来像这样

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

使用这种方法,您将立即获得所有消息,并避免在客户端和服务器之间发送不需要的消息(返回该服务器的消息没有数据)。

关于c# - 我应该在每次交易后关闭套接字(TCPIP)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3724044/

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