Linux服务器开了两个端口,我该怎么知道客户端连接了哪个端口呢

Clampard 2017-10-27 05:27:41
RT
例如我用线程监听了5090 和 5080两个端口,有客户端连接时开一个线程去服务,但是这个线程怎么知道客户端连接的是哪个端口(因为开两个端口是为了区分不同的服务)
...全文
957 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
JasonHuo_ 2017-10-28
  • 打赏
  • 举报
回复
你listen的时候就可以知道了,怎么区分不出呢?搞不懂
大尾巴猫 2017-10-28
  • 打赏
  • 举报
回复
是accept返回的。 同时监听2个端口,是开2个线程,每个线程各自初始化一个socket->bind->listen->accept 哪个线程accept返回的,就是客户端连接的哪个端口,怎么无法分辨?
Clampard 2017-10-28
  • 打赏
  • 举报
回复
引用 1 楼 大尾巴猫的回复:
监听2个不同的端口,必然是两个不同的socket,哪个socket返回了就是客户端连接的哪个
socket返回是指accept的返回?
赵4老师 2017-10-28
  • 打赏
  • 举报
回复
netstat -nba
大尾巴猫 2017-10-28
  • 打赏
  • 举报
回复
引用 5 楼 qq_38374462 的回复:
[quote=引用 3 楼 大尾巴猫的回复:]是accept返回的。 同时监听2个端口,是开2个线程,每个线程各自初始化一个socket->bind->listen->accept 哪个线程accept返回的,就是客户端连接的哪个端口,怎么无法分辨?
我两个线程分别去取两个不同的端口做初始化步骤,但是都是调用我封装的ServerSocket类,该用什么条件去区分?[/quote] 封装没关系,具体看你实现的封装,listen的socket总是2个不同的socket吧,在你封装的ServerSocket内部进行判断是哪个listen的socket
Clampard 2017-10-28
  • 打赏
  • 举报
回复
引用 4 楼 JasonHuo_的回复:
你listen的时候就可以知道了,怎么区分不出呢?搞不懂
举个例子 说一下大概的流程 实在搞不懂(=_=)
Clampard 2017-10-28
  • 打赏
  • 举报
回复
引用 3 楼 大尾巴猫的回复:
是accept返回的。 同时监听2个端口,是开2个线程,每个线程各自初始化一个socket->bind->listen->accept 哪个线程accept返回的,就是客户端连接的哪个端口,怎么无法分辨?
我两个线程分别去取两个不同的端口做初始化步骤,但是都是调用我封装的ServerSocket类,该用什么条件去区分?
大尾巴猫 2017-10-27
  • 打赏
  • 举报
回复
监听2个不同的端口,必然是两个不同的socket,哪个socket返回了就是客户端连接的哪个

15,440

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧