我試圖製作一個接受連接的非常簡單的服務器。sockaddr.sin_port = 1337與「真實」打開的端口不匹配
int sock, serv;
struct sockaddr_in in_sock;
serv = socket(AF_INET, SOCK_STREAM, 0);
in_sock.sin_addr.s_addr = 0;
in_sock.sin_port = 1337;
in_sock.sin_family = AF_INET;
bind(serv, (struct sockaddr *)&in_sock, sizeof(in_sock));
listen(serv, 0);
client = accept(serv, 0, 0);
但是嘗試連接到127.0.0.1:1337的時候,我得到一個連接被拒絕的消息:
(未知)[127.0.0.1] 1337(?):連接被拒絕
然而一個簡單的netstat -tcpan
讓我發現,一個端口被打開確實:
TCP 0 0 0.0.0.0: 14597 0.0.0.0:* LISTEN
如果我將sin_port設置爲更高的端口,它似乎可以正常工作。
缺少什麼我在這裏?爲什麼不打開1337端口?它似乎也是免費的。
你必須使用['htons'(https://linux.die.net/man/3/htons)的端口連接到交換機的字節順序 –