一个应用程序(客户端)连接超过1000个Socket端口(服务端)的有关问题
一个应用程序(客户端)连接超过1000个Socket端口(服务端)的问题。
最近要设计一个应用程序,需要用TCP/IP协议连接服务端。服务端提供了1000个端口号(例如10000-11000之间),每个端口,客户端都需要连接上,并接收数据,如果我每个连接都启动一个线程接收数据,再加上收到数据后要进行一些业务处理,开的线程数是非常大的。超过1000个,不知是否有其他的方式,减少启动的线程数,听说过完成端口,但不知完成端口是否能用在客户端。或者高手给点别的建议。
------解决方案--------------------
完成端口能用在客户端
------解决方案--------------------
为什么要这样设计?
------解决方案--------------------
为什么搞这么多端口?
------解决方案--------------------
线程池可以么
------解决方案--------------------
貌似一千个线成不是太多,如果不存在同步的情况下,和单线成轮询端口差别不会太大吧?
------解决方案--------------------
完成端口用在客户端没什么问题
connect成功以后直接把socket绑到完成端口上,然后WSASend,WSARecv就可以了
-------------------------------------------------------
广告:VC/WinAPI 网络/多线程讨论 QQ群, 群号:41356711
------解决方案--------------------
用完成端口就可以了,完成端口关心的是端口,不一定限于SOCKET,所以在客户端用不会有任何问题。至于线程池,在这里提没有多大意义,
每个SOCKET 连接到服务器以后就把它和完成端口关联起来。你只需要管理每个SOCKET的缓冲区就行了。
------解决方案--------------------
对每个SOCKET来说在上边调用发送接收操作没有变化
------解决方案--------------------
Socket^ listener=gcnew Socket(AddressFamily::InterNetwork,SocketType::Stream,ProtocolType::Tcp);
listener-> Listen(100);
最近要设计一个应用程序,需要用TCP/IP协议连接服务端。服务端提供了1000个端口号(例如10000-11000之间),每个端口,客户端都需要连接上,并接收数据,如果我每个连接都启动一个线程接收数据,再加上收到数据后要进行一些业务处理,开的线程数是非常大的。超过1000个,不知是否有其他的方式,减少启动的线程数,听说过完成端口,但不知完成端口是否能用在客户端。或者高手给点别的建议。
------解决方案--------------------
完成端口能用在客户端
------解决方案--------------------
为什么要这样设计?
------解决方案--------------------
为什么搞这么多端口?
------解决方案--------------------
线程池可以么
------解决方案--------------------
貌似一千个线成不是太多,如果不存在同步的情况下,和单线成轮询端口差别不会太大吧?
------解决方案--------------------
完成端口用在客户端没什么问题
connect成功以后直接把socket绑到完成端口上,然后WSASend,WSARecv就可以了
-------------------------------------------------------
广告:VC/WinAPI 网络/多线程讨论 QQ群, 群号:41356711
------解决方案--------------------
用完成端口就可以了,完成端口关心的是端口,不一定限于SOCKET,所以在客户端用不会有任何问题。至于线程池,在这里提没有多大意义,
每个SOCKET 连接到服务器以后就把它和完成端口关联起来。你只需要管理每个SOCKET的缓冲区就行了。
------解决方案--------------------
对每个SOCKET来说在上边调用发送接收操作没有变化
------解决方案--------------------
Socket^ listener=gcnew Socket(AddressFamily::InterNetwork,SocketType::Stream,ProtocolType::Tcp);
listener-> Listen(100);