免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2140 | 回复: 8
打印 上一主题 下一主题

◎◎◎ 如何获得服务器为每个连接的客户机分配的信息 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-05-08 15:23 |只看该作者 |倒序浏览
服务器创建一个子进程/线程来处理客户机的请求,同时会创建一个新的套接字描述符,
以后具体的通信都使用新的套接字,

我想知道如何获得服务器使用的与客户机具体通信的 “端口号” 信息!
因为这时的端口号已经不是服务器监听的端口号。

各位请指点一下。

论坛徽章:
0
2 [报告]
发表于 2007-05-08 15:24 |只看该作者

回复 1楼 zf.sail 的帖子

我使用 getsockname,每次获得的连接不同的客户的端口号都是相同的,
真搞不明白。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
3 [报告]
发表于 2007-05-08 15:37 |只看该作者
> 因为这时的端口号已经不是服务器监听的端口号。
谁告诉你的?

论坛徽章:
0
4 [报告]
发表于 2007-05-08 15:42 |只看该作者

回复 3楼 flw 的帖子

书上写的,

而且使用 getsockname 得到的也不是服务器监听的端口号

论坛徽章:
0
5 [报告]
发表于 2007-05-08 15:42 |只看该作者

回复 3楼 flw 的帖子

或者在客户机这边使用 getpeername 得到也不是服务器监听的端口号

论坛徽章:
0
6 [报告]
发表于 2007-05-08 16:12 |只看该作者

回复 3楼 flw 的帖子

不过你说得好像也对哈,各种网络工具跟踪出来服务器还是使用的原来那个监听端口!

奇怪

论坛徽章:
0
7 [报告]
发表于 2007-05-09 15:29 |只看该作者

回复 3楼 flw 的帖子

getpeername//得到远程IP地址和端口号
getsockname//得到本地的IP地址和端口号

我就是调用了这两个函数发现的问题,

对每一个新分配的SOCKET(accept返回的),使用getsockname却总是得到相同的端口号,而且不论又多少客户机都是如此,而且该端口号不是监听端口号。

按照:flw 个人的说法,
1.服务器端对新的 accept 返回的套接字调用 getsockname 应该得到的是监听端口号,但是实际上不是;
2.客户机这边对套接字调用 getpeername 应该得到服务器上的 *与客户机连接的端口号* ,但是得到的同样不是服务器上的监听端口号,但是得到的这个端口号却与 "1." 得到的相同。


flw 说法没法解释原因。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
8 [报告]
发表于 2007-05-09 15:35 |只看该作者
man ntohs

论坛徽章:
0
9 [报告]
发表于 2007-05-09 16:30 |只看该作者
一个链接一共有4个部分:
1、本地IP
2、本地PORT
3、远程IP
4、远程PORT

其中任何一个变了,都代表不同的链接
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP