TCP中,客户端连接成功后如何获取自己的端口号?

Eddie780 2018-12-28 02:18:00
客户端连接到了服务器的10080端口,在服务器上看到客户端的连接IP是【25.77.148.91:8679】。

这个IP是客户端的IP,而这个端口号8679是客户端自己随机分配的。这个端口号服务器能获取到,但客户端自己如何获取到这个端口号?用什么API获得?
...全文
2436 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
一彤 2019-01-09
  • 打赏
  • 举报
回复
服务器返回客户端端口get√
xiaohuh421 2019-01-09
  • 打赏
  • 举报
回复
要获得自己在服务端的端口, 估计只能 自定义应用层协议,让服务器回传.
Brainer-Gao 2019-01-08
  • 打赏
  • 举报
回复
从client侧是无法获取到自己随机分配连接server侧的端口号的
Eddie780 2019-01-03
  • 打赏
  • 举报
回复
引用 3 楼 smwhotjay 的回复:
客户端自己如何获取到这个端口号? getsockname

请问:客户端调用getsockname后,得到的是【随机分配的端口号码】 还是连接服务器时候的那个【10080】?
zgl7903 2019-01-03
  • 打赏
  • 举报
回复
这个是外网IP? 如果服务器端程序也是自己做的, 那么就通信回来, 其他的访问可以返回IP地址的服务器试试看 (如http://pv.sohu.com/cityjson?ie=utf-8)


Eddie780 2019-01-03
  • 打赏
  • 举报
回复
getsockname是获取连接服务器的端口号,也就是连接时候的【10080】端口,无法获取到【8679】。有什么办法可以获取到8679呢?
smwhotjay 2018-12-28
  • 打赏
  • 举报
回复
客户端自己如何获取到这个端口号? getsockname
zgl7903 2018-12-28
  • 打赏
  • 举报
回复
smwhotjay 2018-12-28
  • 打赏
  • 举报
回复

getpeername 是对accept返回的socket 获得对方的ip port

struct sockaddr_in sa;

int len = sizeof(sa);

getpeername(AcceptSocket, (struct sockaddr *)&sa, &len);
printf("对方IP %s:%d", inet_ntoa(sa.sin_addr),ntohs( sa.sin_port) );

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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