網路程式開發中常遇到的兩個錯誤碼分析:
成因:socket() 回傳值判斷時少寫括號,導致賦值與比較優先序錯誤。
錯誤碼:
if (sockfd = socket(AF_INET, SOCK_STREAM, 0) < 0) { ... }
< 優先序高於 =,導致 sockfd 被賦值為布林結果 (0/1) 而非 socket fd。
正確碼:
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) { ... }
成因:監聽埠號設為 13 (daytime 服務),屬於特權埠 (<1024),非 root 執行將被拒絕。
解決:將埠號改為 >1024 的非特權埠(如 8080、9999)。