社区
网络编程
帖子详情
服务器主动连接8000多客户,请问服务器connect最大连接数多少?
booming
2011-10-24 10:52:09
我一个服务器要主动去连接8000多的客户,客户都在监听。请问,服务器发出connect最大连接数多少?这样是不是不好?
...全文
952
33
打赏
收藏
服务器主动连接8000多客户,请问服务器connect最大连接数多少?
我一个服务器要主动去连接8000多的客户,客户都在监听。请问,服务器发出connect最大连接数多少?这样是不是不好?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
33 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
kevinaniu
2011-12-30
打赏
举报
回复
”我一个服务器要主动去连接8000多的客户,客户都在监听。“
用IOCP呗。既然客户都在监听,说明此时的客户是服务器端,服务器主动连,说明服务器是客户端。用IOCP模拟客户端主动连接8000多客户理论上问题不大。不过数据处理一定要高效。
qman007
2011-12-30
打赏
举报
回复
Windows下最多4K
Linux:
select/poll 方式 4K
epoll 方式 不定,但远大于4K,最多能达到几万个
fishion
2011-12-19
打赏
举报
回复
没看清楚,一个套节字可能可以连接多个客户端的,没这样使用过
fishion
2011-12-19
打赏
举报
回复
如果是你主动连接的,那就说明你每个连接都需要分配一个唯一的端口了,端口的范围是0~65535,除了一些被使用的,你可以看到你还能用多少个端口
saiyaman5
2011-12-19
打赏
举报
回复
这种做法的好处就是,自己的服务器不用开放,坏处就是自己的服务器负担会加重.
zhouzhipen
2011-12-09
打赏
举报
回复
[Quote=引用 10 楼 booming 的回复:]
我做的军方级的安全。一切反其道行之。
[/Quote]
没话说,你去安全吧
wanglovec
2011-12-09
打赏
举报
回复
反过来就好了, 只要你的硬件厉害 没什么问题
woxuevc2011
2011-12-09
打赏
举报
回复
[Quote=引用 19 楼 hztj2005 的回复:]
一个端口是可以连接多个用户的。
没做过网络编程,请教如何区分数据来自不同的用户?
[/Quote]
用户的ip地址+端口就可以区分撒!
「已注销」
2011-12-09
打赏
举报
回复
[Quote=引用 24 楼 booming 的回复:]
没办法。美军的用法就是如此。
[/Quote]
你错了,那是CIA的做法,美军的做法是利用因特网上现有的连接,秘密传送数据。
booming
2011-12-08
打赏
举报
回复
再说8000个客户,要求每一台都能connect成功,那网络很难设置,除非不要安全了。
-----------
为何不安全?且难配置?
客户开个端口有啥不安全和难配置的?
booming
2011-12-08
打赏
举报
回复
没办法。美军的用法就是如此。
sxcong
2011-11-03
打赏
举报
回复
windows下不修改配置,最多的连接数是3千多个
服务器连客户端肯定不好,为什么不让客户端连服务器。
再说8000个客户,要求每一台都能connect成功,那网络很难设置,除非不要安全了。
sevancheng
2011-11-03
打赏
举报
回复
只能说是及其sb的做法,服务端就服务端,还做什么客户端
连8000个你要用掉8000个端口,你连上了之后怎么准换为服务端的角色呢?
teleinfor
2011-11-02
打赏
举报
回复
[Quote=引用 10 楼 booming 的回复:]
我做的军方级的安全。一切反其道行之。
[/Quote]
xiayadong
2011-11-02
打赏
举报
回复
[Quote=引用 13 楼 xuddk727 的回复:]
服务器的的最大连接速度受很多影响,并不是简单判断的出得。
首先是上行流量,其次是数据计算量,资源占用率等等,这些综合起来才能算是考虑的比较完全的最大连接数。
[/Quote]
对,主要看你系统的资源,以及采用何种网络模型
binarie
2011-11-02
打赏
举报
回复
从系统资源上看,在文件描述符或句柄没有限制的情况下,最多也就对外发出65535个TCP连接吧?毕竟每个都要占用一个临时端口。
如果你在windows系统里,默认的临时端口范围只能是1024-5000,那更坑爹。
xiaoshu163000
2011-11-02
打赏
举报
回复
可以参考一下select模型,每来一个客户端,就把他的socket放进一个FD_READ里面,然后循环查询是否存在可读,区别数据是根据客户端发送时自带的socket来区别的[Quote=引用 19 楼 hztj2005 的回复:]
一个端口是可以连接多个用户的。
没做过网络编程,请教如何区分数据来自不同的用户?
[/Quote]
hztj2005
2011-11-02
打赏
举报
回复
一个端口是可以连接多个用户的。
没做过网络编程,请教如何区分数据来自不同的用户?
Ronald_Z
2011-11-01
打赏
举报
回复
参考一下:
socket + threads/threadpool
大概性能:小于1500个连接
实现:accept一个socket,就交给一个线程去管理,比较笨,但也比较有效,因为是同步方式,控制起来很方便。高级点的,就是交给一个线程池去管理,线程池由系统自动托管,省去了开销线程的时间。一般小型项目,用这个完全足够,开发也简单。但要注意,如果若干socket长时间占用线程池中的线程,同时其它连接数又比较多,很容易出现提示说你没有足够的线程供使用。呵呵,让socket少做点事,少占用时间,换一个快点的cpu是不错的方式。另外,如果有一些比较好的第三方线程池组件,也可以选择使用,比如smartthreadpool。
socket + select
大概性能:大于1500个连接后性能下降
实现:select是很常用的一种模型。是在阻塞功能中轮询一个或多个socket,将要处理的socket放到一个ilist中,当select轮询结束后,然后我们再自己处理这个ilist中的socket。具体的用法可以看一下msdn。select的效率并不能说是高的,因为当队列中待处理的socket比较多的时候,处理最后几个socket相当于要遍历所有前面的socket,非常不划算的。
socket + asynchronous
大概性能:约7500个客户端连接
实现:beginxxxx,endxxxx,再熟悉不过了吧。异步socket归根到底,还是用的线程池技术,用线程池来处理异步io。这就又引出个问题,.net的线程池又是用的什么实现方式,以前看过有人说,.net的线程池是用的完成端口来实现的,我不知道这样的说法是不是正确,从查到的资料中也没有办法确认(希望这点有朋友可以告诉我)。异步socket对于程序的处理流程来说比同步复杂了许多,异步回调函数的控制不如同步方式那样直观。但有一点我想应该是要注意的,就是回调函数应该轻装上阵,不应该处理过多的事务,对传递数据的处理,应该交给其它线程进行处理。
iocp(完成端口)
大概性能:约20000~50000个客户端连接
实现:现在.net下有一些伪iocp,大家可以去搜索一下,还没有见过开放出来的用这些伪iocp来实现的socket例子。我说的20000~50000个客户端连接,是指在c++下开发的情况,这样的情况下,需要用到的基本技术还包括内存池、查询算法等。
xiaoshang_program
2011-11-01
打赏
举报
回复
楼上的很正确呀
这个取决于你的系统资源
一个端口可以多开
加载更多回复(13)
TCP网络编程中
connect
()、listen()和accept()三者之间的关系
基于 TCP 的网络编程开发分为
服务器
端和
客户
端两部分,常见的核心步骤和流程如下:
connect
()函数对于
客户
端的
connect
() 函数,该函数的功能为
客户
端
主动
连接
服务器
,建立
连接
是通过三次握手,而这个
连接
的过程是由内核完成,不是这个函数完成的,这个函数的作用仅仅是通知 Linux 内核,让 Linux 内核自动完成 TCP 三次握手
连接
(三次握手详情,请看《浅谈 TCP 三次握手》),最...
TCP网络编程中
connect
()、listen()和accept()三者之间的关系 ( 非常重要!!)
https://blog.csdn.net/tennysonsky/article/details/45621341 基于 TCP 的网络编程开发分为
服务器
端和
客户
端两部分,常见的核心步骤和流程如下:
连接
详情:
connect
()函数 对于
客户
端的
connect
() 函数,该函数的功能为
客户
端
主动
连接
服务器
,建立
连接
是通过三次握手,而这个
连接
的过程是由内核完成,不是...
java
客户
端 tcp
连接
_java tcp
客户
端
连接
服务器
端代码写法_tcp client
connect
ion method...
tcp
服务器
端 tcp serverServer端所要做的事情主要是建立一个通信的端点,然后等待
客户
端发送的请求。典型的处理步骤如下:1. 构建一个ServerSocket实例,指定本地的端口。这个socket就是用来监听指定端口的
连接
请求的。2.重复如下几个步骤:a. 调用socket的accept()方法来获得下面
客户
端的
连接
请求。通过accept()方法返回的socket实例,建立了一个和客...
TCP网络编程中
connect
() listen()和accept()三者之间的关系
对于
客户
端的
connect
() 函数,该函数的功能为
客户
端
主动
连接
服务器
,建立
连接
是通过,而,不是这个函数完成的,这个函数的作用仅仅是通知 Linux 内核,让 Linux 内核自动完成
连接
(),最后把
连接
的结果返回给这个函数的返回值(成功
连接
为0, 失败为-1)。通常的情况,
客户
端的
connect
() 函数默认会一直阻塞,直到成功或超时失败才返回(正常的情况,这个过程很快完成)。...
c#中
connect
函数_TCP网络编程中
connect
()、listen()和accept()三者之间的关系
基于 TCP 的网络编程开发分为
服务器
端和
客户
端两部分,常见的核心步骤和流程如下:
connect
()函数对于
客户
端的
connect
() 函数,该函数的功能为
客户
端
主动
连接
服务器
,建立
连接
是通过三次握手,而这个
连接
的过程是由内核完成,不是这个函数完成的,这个函数的作用仅仅是通知 Linux 内核,让 Linux 内核自动完成 TCP 三次握手
连接
(三次握手详情,请看《浅谈 TCP 三次握手》),最...
网络编程
18,356
社区成员
64,161
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章