網絡世界本質上是客戶進程與服務器進程的對話。以 Telnet 為例:客戶端連接 23 端口,服務端運行的 telnetd 進程處理連接、顯示登錄界面等。

圖 2:客戶機和服務器的關系
客戶-服務器模型可使用 SOCK_STREAM(TCP)、SOCK_DGRAM(UDP)或其他協議,雙端只需協議一致。經典例子:telnet/telnetd、ftp/ftpd、bootp/bootpd。
服務端通常採用 fork() 處理多客戶連接:主進程 accept() 後 fork() 子進程處理具體通信,這是下一節示例的核心模式。
該服務器在流式連接上發送字符串 "Hello, World!\n"。測試方法:
$ telnet remotehostname 2349
remotehostname 為運行服務器的機器名。


具體代碼請見:Beej's Guide 系列第 19 篇完整代碼
客戶端更簡單:通過 2349 端口連接命令行指定的主機,接收服務器發送的字符串。
具體代碼同樣請見上述鏈接。
摘自 xiaobin_HLJ80 的專欄