程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> Beej’s Guide Network to Programming 系列連載19

Beej’s Guide Network to Programming 系列連載19

編輯:關於C

6.客戶/服務器端背景知識
       這裡是個客戶--服務器的世界。在網絡上的所有東西都是在處理客戶進 程和服務器進程的交談。舉個telnet 的例子。當你用telnet (客戶)通過23 號端口登陸到主機,主機上運行的一個程序(一般叫 telnetd,服務器)激活。 它處理這個連接,顯示登陸界面,等等。

 \
 

                                       圖2:客戶機和服務器的關系

 

 圖 2 說明了客戶和服務器之間的信息交換。

       注意,客戶--服務器之間可以使用SOCK_STREAM、SOCK_DGRAM或者其它(只要它們采用相同的)。一些很好的客戶--服務器的例子有 telnet/telnetd、 ftp/ftpd 和 bootp/bootpd。每次你使用 ftp 的時候,在遠端都有一個 ftpd 為你服務。

       一般,在服務端只有一個服務器,它采用 fork() 來處理多個客戶的連接。基本的程序是:服務器等待一個連接,接受 (accept()) 連接,然後fork() 一個子進程處理它。這是下一節我們的例子中會講到的。

6.1. 一個簡單的服務器
       這個服務器所做的全部工作是在流式連接上發送字符串 "Hello, World!\n"。你要測試這個程序的話,可以在一台機器上運行該程序,然後在另外一機器上登陸:

   $ telnet remotehostname 2349

remotehostname 是該程序運行的機器的名字。

 \

\

具體代碼請看:/kf/201201/116006.html

 

6.2. 一個簡單的客戶端
       這個程序比服務器還簡單。這個程序的所有工作是通過2349 端口連接到命令行中指定的主機,然後得到服務器發送的字符串。

 

具體代碼請看:/kf/201201/116006.html

摘自 xiaobin_HLJ80的專欄

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved