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的專欄