【发布时间】:2012-03-26 17:10:35
【问题描述】:
我尝试在 C 语言的服务器应用程序中打印客户端端口。
但是我得到了客户端端口的负数,这是什么奇怪的行为:-/
有谁知道哪里有问题?
导致问题的部分代码:
struct sockaddr_in client_address;
int chosenPort = (int) ntohl(client_address.sin_port);
pritf("Client port is %d, chosenPort");
我得到像 -2121400320 这样的端口。
【问题讨论】:
-
你不应该使用
int和%d(但是unsigned int和%u),特别是。因为如果sin_port是 >32767 并且一个实现的int只有 16 位,你将再次看到负数。