【发布时间】:2019-05-15 17:38:39
【问题描述】:
我有一个使用多线程同时为多个客户端服务的 tcpserver。它工作得很好,但我在内存管理方面遇到了问题。
最多可以有 1500 个客户端连接到服务器并保持连接数小时和数天。
所以我遇到了“内存不足问题”,因为我必须使用 32 位操作系统。所以我想转换为 64 位操作系统应该保持计划 b。
你建议我做什么?
基于任务的异步 tcpserver 服务于多客户端?
还是继续使用多线程并制作可重复使用的 1500 个线程?
谢谢。
【问题讨论】:
-
1500 个线程?!您只需要2个。一个线程接收数据并将其放入堆栈,另一个线程处理数据。您可以添加更多处理线程,具体取决于 CPU 可以支持的内容(每个内核 1 个线程)。
-
好的,但它是一个反作弊服务器系统,就像 1500 个游戏客户端和游戏服务器之间的代理,我必须监听 1500 个客户端和 1500 个游戏服务器 tcp 套接字,我也想要 2 个线程但是如何?如何在一个线程中执行 1500 个客户端 tcp 数据包?我正在找这个。
-
有没有办法在一个线程中等待多个客户端流?暗流 As NetworkStream = vekil_client.GetStream()
-
如果您正在等待某事或每个内核一个线程来处理某事,则需要一个线程。我有一段时间没有这样做了,但我认为 Asynchronous Socket 是您正在寻找的。span>
-
找到了,我以前用SocketAsyncEventArgs处理过很多客户。它专门用于高性能套接字应用程序。
标签: vb.net multithreading multitasking tcpserver