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