首页 文章

我应该每笔交易打开和关闭套接字吗?

提问于
浏览
1

我有一个异步服务器运行此MSDN article的略微修改版本 . 这只允许一个客户端一次加入 .

我的问题是,我可以为每个事务打开和关闭套接字(它使用TCP)吗?如果我允许多个客户端加入(通过修改代码侦听更多客户端),似乎某些消息是交叉连接 . 例如,如果我尝试从两个客户端从服务器下载文件,那么最后一个客户端获取文件并且第一个客户端超时 . 或者,如果我开始从一个客户端发送一些数据,然后从另一个客户端启动,则服务器收到两者的混合 .

由于我的程序不需要高性能(如游戏可能),每个事务打开/关闭套接字是否有任何问题,或者是否有更好的方法来处理多个客户端?

编辑 - 我忘了提到监听器本身在整个生命周期中都会保持打开状态,但每个客户端都会为事务本身打开和关闭一个新的套接字 . 在MSDN链接的代码中,变量是“handler” .

1 回答

  • 3

    打开和关闭套接字有开销,所以简短的答案是否定(在收听方面) . 这只是最佳实践,如果您不担心这一点,那么使用任何有效的方法 .

    当涉及到客户端时,套接字的使用实际上取决于您计划发送数据的频率 . 如果不经常打开插座很短的时间可能是常态 . 如果您注意到任何类型的“串扰”,这很可能是由于代码中的错误造成的 . 对于某些引用,请检查MSDN上的TcpClient和TcpListener类 .

相关问题