首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

Beej's Guide 網絡編程指南第 19 章:客戶/服務器架構基礎

     編輯:關於C

客戶-服務器模型

網絡世界核心是**客戶進程**與**服務器進程**的對話。典型例子:telnet (客戶) 連接 23 端口,遠端 telnetd (服務器) 守候處理登錄、會話。

客戶機與服務器關系圖

  • 通訊協議可用 SOCK_STREAM (TCP) 或 SOCK_DGRAM (UDP),雙端必須一致。
  • 經典對:ftp/ftpd, bootp/bootpd。

服務器典型流程

  1. socket() 建立套接字。
  2. bind() 綁定端口。
  3. listen() 監聽。
  4. 循環 accept() 等待連接。
  5. fork() 子進程處理具體業務 (並發)。
  6. 子進程 send()/recv() 數據交互。

簡單服務器示例

功能:TCP 端口 2349 發送 "Hello, World!\n" 給連接者。

服務器代碼片段1

服務器代碼片段2

完整代碼請參考:/kf/201201/116006.html

簡單客戶端示例

功能:連接指定主機 2349 端口,接收並打印服務器發送的字串。

完整代碼請參考:/kf/201201/116006.html

測試方法


# 終端 1 啟動服務器
$ ./server

# 終端 2 (同機或不同機) 測試
$ telnet localhost 2349
# 或
$ ./client localhost 2349

本章核心收穫

  1. 理解 C/S 架構角色分工:服務器被動等待、主動派生處理者;客戶端主動發起連接。
  2. 掌握 fork() 實現並發的基本模式 (父進程 accept,子進程 service)。
  3. 為後續學習 select/poll/epoll 多路復用、線程池等高性能模型鋪墊。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved