Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
URL中使用的端口字节顺序是什么?_Url_Networking_Port_Endianness - Fatal编程技术网

URL中使用的端口字节顺序是什么?

URL中使用的端口字节顺序是什么?,url,networking,port,endianness,Url,Networking,Port,Endianness,当您想绑定到C中的端口时,必须使用htons(port)将端口从主机字节顺序转换为网络字节顺序。发生这种情况是因为端口号直接复制到TCP数据包,所以它们必须在小端和大端机器上匹配 考虑C中的以下示例: int端口=5000; 地址中的结构sockaddr\u; addr.sin_family=AF_INET; addr.sin_addr.s_addr=htonl(INADDR_ANY); 地址SINU port=htons(端口); 注意htons的用法。现在,如果运行netstat-anp-

当您想绑定到C中的端口时,必须使用
htons(port)
将端口从主机字节顺序转换为网络字节顺序。发生这种情况是因为端口号直接复制到TCP数据包,所以它们必须在小端和大端机器上匹配

考虑C中的以下示例:

int端口=5000;
地址中的结构sockaddr\u;
addr.sin_family=AF_INET;
addr.sin_addr.s_addr=htonl(INADDR_ANY);
地址SINU port=htons(端口);
注意
htons
的用法。现在,如果运行
netstat-anp--tcp
(在Linux上),您将看到正在侦听
0.0.0.0:5000
。端口号似乎使用了主机端号


现在,一个问题出现了:如果端口号是URL中的主机端,这是否意味着big-endian客户端不能使用
http://a.b.c.d:5000
URL连接到一个小的endian服务器,监听
0.0.0:5000

不,您几乎肯定在错误的抽象级别误用了规则

本地浏览器很可能会从URL末尾抓取
:5000
字符串,并使用该字符串以主机格式创建整数
5000
。然后它将把它传递给
htons
,作为构建会话的一部分,方式与代码片段完全相同

瞧,这些结构包含了正确的网络顺序