我应该为每笔交易打开和关闭套接字吗
本文关键字:套接字 交易 我应该 | 更新日期: 2023-09-27 18:00:23
我有一个异步服务器,运行这篇MSDN文章的一个稍微修改过的版本。这一次只允许一个客户端加入。
我的问题是,我可以为每个事务打开和关闭套接字(它使用TCP)吗?如果我允许多个客户端加入(通过修改代码侦听以获得更多客户端),那么似乎有些消息是交叉连接的。例如,如果我尝试从两个客户端从服务器下载一个文件,那么最后启动的客户端将获得该文件,而第一个客户端将超时。或者,如果我开始从一个客户端发送一些数据,然后从另一个客户端开始,服务器会收到两者的混合。
由于我的程序不需要高性能(就像游戏一样),每次事务打开/关闭套接字是否有问题,或者是否有更好的方法来处理多个客户端?
编辑-我忘了提到侦听器本身在整个生命周期中都将保持打开,但每个客户端都会为事务本身打开和关闭一个新的套接字。在MSDN链接中的代码中,变量是"handler"。
打开和关闭套接字会有开销,所以简短的回答是否定的(在侦听端)。不过,这只是最好的做法,所以如果你不担心这一点,那么就使用任何有效的方法。
当涉及到客户端时,套接字的使用实际上取决于您计划发送数据的频率。如果不经常,那么短时间打开套接字可能是常态。如果你注意到任何类型的"串扰",这很可能是由于你的代码中的错误。对于某些引用,请查看MSDN上的TcpClient和TcpListener类。