linux套接字端口,多端口监听套接字linux

我正在编写一个多线程服务器应用程序,在C(linux)中,它必须侦听2个不同的端口号,比如侦听端口号3000和4000,用于连接到它的不同客户端以提供不同的功能(实际功能由工作人员执行)线程,主线程无限期运行,并在新连接时产生新工作者).我不确定select是否可以在这里工作,因为我们可以有多个套接字连接,但都与相同的端口号相关联.我尝试顺序绑定到sock_1和sock_2.当我运行client_1时,一切都按预期工作.但是,当我运行client_2时,我在客户端的connect()上收到错误.如果可以在这里使用select(),请告诉我如何操作.任何帮助非常感谢!谢谢 !

(P.Sock_1指的是端口号3000,sock_2指的是端口号4000,client_1指的是从端口3000寻求服务的客户端,而client_2指的是从4000端口向同一服务器寻求服务的客户端)

解决方法:

你完全误解了socket和port,这两个是不同的东西.

端口可以​​有多个套接字.但您可以将列表套接字(被动套接字)绑定到仅一个端口.

在继续read this之前

如果您希望应用程序在两个不同的端口上侦听,请使用它绑定两个不同的套接字.

对于快速参考,单个进程中的select只能有1024个套接字描述符.

因此,如果您使用的是单个流程模型,那么select只能处理1024个连接.

另请阅读C10k问题,看看哪些适合您的需求.

标签:c-3,linux,sockets,port

来源: https://codeday.me/bug/20190723/1511619.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值