在绑定端口号时,如果超过了65535,会怎样?

来源:百度知道 编辑:UC知道 时间:2024/06/01 14:25:47
在做Socket测试的时候,一不小心将Client端口号写成了95555,于是索性将Server的端口也设为95555,结果通信正常。但是使用netstat -an不能看到95555这个端口,所以想请教,超过了65535之后,实际使用的端口是多少?有什么分配规则吗?

超过0xffff时溢出.结果是
unsigned short result;

result = 95555 & 0xffff;

printf("%d",result);

得30019

超过65535的,实际上取的值是除以65535的余数,在你的程序运行以后,用网络监视或者防火墙软件可以验证,你的95555实际上是30020。

u_short sin_port;
所以95555这个数值会被截断。
因此你的实际绑定的值是30019。
这样,它就跟api的逻辑就没有关系了,而是数据类型的问题。

楼上的溢出计算有误,应该是对65536计算溢出,而不是65535