網(wǎng)絡編程是什么
網(wǎng)絡編程的本質(zhì)是兩個設備之間的數(shù)據(jù)交換,當然,在計算機網(wǎng)絡中,設備主要指計算機。數(shù)據(jù)傳遞本身沒有多大的難度,不就是把一個設備中的數(shù)據(jù)發(fā)送給兩外一個設備,然后接受另外一個設備反饋的數(shù)據(jù)。
何為Socket
網(wǎng)絡上的兩個程序通過一個雙向的通信連接實現(xiàn)數(shù)據(jù)的交換,這個連接的一端稱為一個socket。建立網(wǎng)絡通信連接至少要一對端口號(socket)。socket本質(zhì)是編程接口(API),對TCP/IP的封裝,TCP/IP也要提供可供程序員做網(wǎng)絡開發(fā)所用的接口,這就是Socket編程接口;HTTP是轎車,提供了封裝或者顯示數(shù)據(jù)的具體形式;Socket是發(fā)動機,提供了網(wǎng)絡通信的能力。
Socket編程
一個是ServerSocket,一個是Socket。服務端和客戶端之間通過Socket建立連接,之后它們就可以進行通信了。首先ServerSocket將在服務端監(jiān)聽某個端口,當發(fā)現(xiàn)客戶端有Socket來試圖連接它時,它會accept該Socket的連接請求,同時在服務端建立一個對應的Socket與之進行通信。這樣就有兩個Socket了,客戶端和服務端各一個。
對于Socket之間的通信其實很簡單,服務端往Socket的輸出流里面寫東西,客戶端就可以通過Socket的輸入流讀取對應的內(nèi)容。Socket與Socket之間是雙向連通的,所以客戶端也可以往對應的Socket輸出流里面寫東西,然后服務端對應的Socket的輸入流就可以讀出對應的內(nèi)容。
下面是一個例子,客戶端讀寫和服務端讀寫