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