我嘗試在我的服務器應用程序中打印客戶端端口在C. 但我得到負數的客戶端端口,什麼是奇怪的行爲: -/ 任何人有一個想法哪裏可能是一個問題?我的代碼
部分引起的問題:ntohl在sin_port上使用,並獲得負面的nubmers
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位,你將會再次看到負數。 – 2012-03-09 12:29:57