Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.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
为什么在C中将ushort端口号从HTON转换为NTOH会产生不同的结果? 我发送一个端口号,在socket上加上2字节,C++客户端在用HtNon将它转换成网络字节。_C++_Winapi_Networking - Fatal编程技术网

为什么在C中将ushort端口号从HTON转换为NTOH会产生不同的结果? 我发送一个端口号,在socket上加上2字节,C++客户端在用HtNon将它转换成网络字节。

为什么在C中将ushort端口号从HTON转换为NTOH会产生不同的结果? 我发送一个端口号,在socket上加上2字节,C++客户端在用HtNon将它转换成网络字节。,c++,winapi,networking,C++,Winapi,Networking,当使用C服务器接收时,我使用IPAddress.NetworkToHostOrder将其转换,并且数字完全不同 htons(8085) -> 38175 ?? IPAddress.NetworkToHostOrder(38175) -> ?? 那是什么原因 与BSD sockets API不同,BSD sockets API中的每个函数都有一个单独的名称,在.NET中,NetworkToHostOrder方法是重载的,并且可以根据输入的大小执行ntohs或ntohl 当C看到一个文

当使用C服务器接收时,我使用IPAddress.NetworkToHostOrder将其转换,并且数字完全不同

htons(8085) -> 38175 ??
IPAddress.NetworkToHostOrder(38175) -> ??

那是什么原因

与BSD sockets API不同,BSD sockets API中的每个函数都有一个单独的名称,在.NET中,NetworkToHostOrder方法是重载的,并且可以根据输入的大小执行ntohs或ntohl

当C看到一个文本时,除非它不适合,否则传递一个32位整数输入int是默认类型,因此得到的结果与ntohl而不是ntohs相同

如果需要ntohs行为,请更改输入类型,例如

IPAddress.NetworkToHostOrder((short)38175) 

与BSD sockets API不同,BSD sockets API中的每个函数都有一个单独的名称。在.NET中,NetworkToHostOrder方法是重载的,根据输入的大小,可以执行ntohs或ntohl

当C看到一个文本时,除非它不适合,否则传递一个32位整数输入int是默认类型,因此得到的结果与ntohl而不是ntohs相同

如果需要ntohs行为,请更改输入类型,例如

IPAddress.NetworkToHostOrder((short)38175) 

谢谢,现在说得通了谢谢,现在说得通了