6. 客戶/服務器端背景知識

原文:https://beej.us/guide/bgnet/html/#client-server-background

 

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 是該程序運行的機器的名字。

 

 

 

具體代碼請看:網絡編程client和server

 

 

 

6.2. 一個簡單的客戶端

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

 

具體代碼請看:網絡編程client和server

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章