tcp服务器连接数多少合适 如果有一万个客户端,但是发送频率大概只是每分钟一次(每次也不耗时),一个服务器撑得住吗。而且每个线程也要占用一定量内存,不知道内存要不要考虑? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你这种需要,只要系统允许你开这么多套接字(不要出现too many file descriptors),就是没问题的,效率没什么损失。但如果客户端有时间对齐,都在一个时间发送数据,则流量也不小。 TCP是面向连接的,如果需要1W的客户端,服务器端肯定需要1W的线程来读客户端发来的信息啊,虽然大部分时间是阻塞的。 不管是tcp还是udp,连接数量1w不算是很多。线程数量根据cpu数量或者核数确定,大概2*cpu+2左右。连接可以同时保持,但线程对数据处理是分时的,不能保证完全并行。lz这种需求,是常用的网络游戏服务端设计,使用完成端口机制完全可以处理。具体参考可以百度或者找些网络游戏服务端编程类书看看就知道了。 UDP没有连接的概念的。而且看过很多TCP服务器程序,都是while中accept监听传入的连接请求,然后开启一个线程,在这个线程里处理socket的读取和写入操作。如果线程数不等于连接数,如何响应客户端呢? 用完成端口是可以的,2~4个线程就够用了。阻塞,每个线程一个socket,天啦,太可怕了。 如果是TCP常链接则需要维护1W个线程,若不想起1W个线程可以改用短连接或UDP的方式这样可以减少系统对线程的维护。 线程多的话线程间的切换也是耗时的,而且每开启一个线程会占用一定量的内存空间。貌似线程一般和CPU核数有关系,太多没意义。如果要用一条线程处理一万个连接,貌似就不能用socket,socketserver的inputstream等阻塞方法了。 我知道了,这种情况像http用短连接就行,每次操作创建一次连接就行。 用UDP,自己加检验应答。 VS2010 用法 使用GDI+和双缓存画出的区域偏离很多怎么回事,有码 CPrintFrame CPrintView中的几处错误 CListCtrl的问题 怎么在CONSOLE程序中使用定时器? 字符分割问题 请教,如何把已经打开的网页的文字保存的文件内 一个小问题 请问如何将用DirectShow捕获下来的视频流通过网络发送出去?(100分) 关于PtInRect的函数 关于图标的旋转,放大,缩小,多谢各位老大们 ado连接access数据库,unknown error 0x800A0E7A
线程数量根据cpu数量或者核数确定,大概2*cpu+2左右。
连接可以同时保持,但线程对数据处理是分时的,不能保证完全并行。
lz这种需求,是常用的网络游戏服务端设计,使用完成端口机制完全可以处理。具体参考可以百度或者找些网络游戏服务端编程类书看看就知道了。
如果要用一条线程处理一万个连接,貌似就不能用socket,socketserver的inputstream等阻塞方法了。