書中用的是server_address.sin_port = 5566;
正確應該是server_address.sin_port = htons(5566);
網路的位元組順序和主機的位元組順序是不同的,網路是大端模式,intel x86和amd cpu是小端模式
這麼出名的《linux程式設計》書籍也有這種紕漏,實在讓我對這本書的敬仰大打折扣。
#include #include #include #include #include #include #include #include using namespace std;
int main()
server_address.sin_family = af_inet;
server_address.sin_addr.s_addr = inet_addr("127.0.0.1");
server_address.sin_port = htons(5566);
server_len = sizeof(server_address);
if (bind(server_sockfd, reinterpret_cast(&server_address), server_len) < 0)
if (listen(server_sockfd, 5) < 0)
while (1)
return 0;
}
#include #include #include #include #include #include #include #include int main()
write(sockfd, &ch, 1);
read(sockfd, &ch, 1);
printf("char from server = %c\n", ch);
close(sockfd);
return 0;
}
Linux socket程式設計 伺服器 客戶端
根據網上的程式修改的,感謝!另外有個linux網路除錯工具,tcpdump,類似xp上的wireshark,使用介紹 伺服器端 客戶機端 可以實現,客戶機一直傳送,伺服器一直接收資料,原理網上的程式是只發一次。現在這個還有個問題,退出只能ctrl c,如果客戶機先退出,伺服器一直接收資料,不知道什麼...
胖客戶端 瘦客戶端和富客戶端
以c s結構開發的網路應用程式,需要為客戶端開發專用的客戶端軟體,相對而言其客戶端比較龐大,在客戶端可以實現很多功能,分擔伺服器的負擔,屬於胖客戶端型別。以b s結構開發的web應用,其客戶端只是乙個瀏覽器,所有業務邏輯由伺服器端進行處理,相對而言客戶端比較瘦小,故稱為瘦客戶端。目前比較流行的一種開...
非同步客戶端和同步客戶端
先寫下我的理解,方便後邊閱讀資料校驗。一 同步客戶端 比如乙個連線有兩個請求,請求1 和 請求2,請求1 先發起請求,請求2後發起請求,則請求2 要等待請求1 響應完成才能接收到響應。舉個棗子,httpclient 傳送get請求,執行緒會一致阻塞,直到有響應結果。二 非同步客戶端 比如乙個連線有兩...