免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: victory0717
打印 上一主题 下一主题

关于socket侦听的问题,请高手指点!!! [复制链接]

论坛徽章:
0
11 [报告]
发表于 2007-03-20 11:37 |只看该作者
顺便可以设计一下客户端的运行方法如下,呵呵


客户端扫描服务器开放端口

依次测试并连接每一个端口

当有空闲端口(可用)时中止

开始建立连接


意外情况:
另外一个客户端同时连接了同一个端口

出错处理

如果连接失败,再次尝试连接下一个可用端口

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
12 [报告]
发表于 2007-03-20 11:37 |只看该作者
原帖由 soul_of_moon 于 2007-3-20 11:30 发表

这个显然是资源问题,试想一个项目要耗掉200个端口,这是怎样一个大项目。
如何分配,我想可以用配置文件的方式解决。
事实上你不可能在运行的时候再去通知客户端你监听的端口,因为那时还没有建立连接。

配置 200 个不同的配置文件,这个……难道还不算是一个大问题吗?
至于消耗掉 200 个端口,那不算多。就算是 2000 个、20000 个都不算多。

论坛徽章:
0
13 [报告]
发表于 2007-03-20 11:52 |只看该作者
原帖由 flw 于 2007-3-20 11:37 发表

配置 200 个不同的配置文件,这个……难道还不算是一个大问题吗?
至于消耗掉 200 个端口,那不算多。就算是 2000 个、20000 个都不算多。

服务器和客户机都只要一个配置文件啊
服务器记录起始端口到结束端口,如:
PRO_START_PORT=18001
PRO_END_PORT=18200

而客户端只要记录它所要连接的端口,如:
PRO_SERV_PORT=18008
就可以了。
当然每个客户机的所连的server端口不一样。

200个还不多啊?首先要起200个线程,然后再监听,耗掉200个端口。我还没见过有哪个项目要耗掉200个端口。最近在做的upnp,看它也只用了3个端口--2个udp、1个tcp。

而方案2同一时间并一定会有200个线程,因为在同一时间,所有客户机不一定都在线。而且不因为客户机的数量而影响。如果只有10个客户机,那就只起11个线程,但像方案1就没这样的灵活性了。

在我看来,要监听这么多端口,负载太大,设计肯定出了问题

论坛徽章:
0
14 [报告]
发表于 2007-03-20 12:59 |只看该作者
客户200个左右-----第二种,并且用进程。来一个连接开一个进程。

论坛徽章:
0
15 [报告]
发表于 2007-03-20 13:42 |只看该作者
原帖由 思一克 于 2007-3-20 12:59 发表
客户200个左右-----第二种,并且用进程。来一个连接开一个进程。

我支持多线程。不知道版主用多进程,有何涵义?

论坛徽章:
0
16 [报告]
发表于 2007-03-20 13:49 |只看该作者
对于CLIENT总数固定,连接相对比较长的应用,比如FTP,SMTP,POP等服务用县城没有什么太大意义。

速度的瓶颈是网络,县城节省的时间没有多少。

总之,THREAD能不用尽量不用。


原帖由 soul_of_moon 于 2007-3-20 13:42 发表

我支持多线程。不知道版主用多进程,有何涵义?

论坛徽章:
0
17 [报告]
发表于 2007-03-20 13:56 |只看该作者
原帖由 思一克 于 2007-3-20 13:49 发表
对于CLIENT总数固定,连接相对比较长的应用,比如FTP,SMTP,POP等服务用县城没有什么太大意义。

速度的瓶颈是网络,县城节省的时间没有多少。

总之,THREAD能不用尽量不用。



但是线程似乎是趋势。线程最主要的优势之一就是节省资源,线程又叫轻量进程。

[ 本帖最后由 soul_of_moon 于 2007-3-20 14:07 编辑 ]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
18 [报告]
发表于 2007-03-20 14:12 |只看该作者
原帖由 soul_of_moon 于 2007-3-20 13:56 发表

但是线程似乎是趋势。线程最主要的优势之一就是节省资源,线程又叫轻量进程。

线程节省资源和 system( "tail -500 file1 > file2" ) 很耗资源一样,很多人都没有一个感性的认识。

使用多线程的程序要比使用多进程的程序不稳定得多,
因此除非系统结构要求高度协作的多任务,否则一律用多进程代替。

论坛徽章:
0
19 [报告]
发表于 2007-03-20 14:14 |只看该作者
非常同意flw, 经验很多。

也就是flw所说:使用多线程的程序要比使用多进程的程序不稳定得多,
因此除非系统结构要求高度协作的多任务,否则一律用多进程代替。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
20 [报告]
发表于 2007-03-20 14:24 |只看该作者
原帖由 思一克 于 2007-3-20 14:14 发表
非常同意flw, 经验很多。

也就是flw所说:使用多线程的程序要比使用多进程的程序不稳定得多,
因此除非系统结构要求高度协作的多任务,否则一律用多进程代替。

谢谢版主支持
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP