一:TCP/IP協(xié)議
TCP/IP是一個(gè)協(xié)議族走诞。
TCP:(Transmission?Control?Protocol)傳輸控制協(xié)議
IP:(Internet?Protocol)互聯(lián)網(wǎng)協(xié)議
二荆秦、 四層網(wǎng)絡(luò)體系結(jié)構(gòu):
物理層(網(wǎng)絡(luò)接口層)、
互聯(lián)網(wǎng)絡(luò)層(包含IP協(xié)議)、
傳輸控制層(TCP、UDP)、
應(yīng)用層(http魄揉、ftp)
(重點(diǎn)理解)
TCP協(xié)議:面向連接、可靠的協(xié)議拭宁。(“三次握手”確保)效率較低,耗費(fèi)性能洛退。
一般用于CS(Client-Server客戶端-服務(wù)端)結(jié)構(gòu),用于傳輸重要的數(shù)據(jù)杰标。
IP地址:網(wǎng)絡(luò)上主機(jī)的唯一標(biāo)識(shí)地址兵怯。
端口(port):具有網(wǎng)絡(luò)功能的軟件的唯一標(biāo)識(shí)。
二:Socket(套接字)腔剂、ServerSocket
1.Socket:套接字是兩臺(tái)機(jī)器間通信的端點(diǎn)媒区。
public?Socket(String?host,int?port)
public?OutputStream?getOutputStream()?返回此套接字的輸出流。
public?InputStream?getInputStream()?返回此套接字的輸入流掸犬。
2.ServerSocket:此類實(shí)現(xiàn)服務(wù)器套接字袜漩。
public?ServerSocket(int?port)
public?Socket?accept()?偵聽(tīng)并接受到此套接字的連接。此方法在連接傳入之前一直阻塞湾碎。
引入多線程實(shí)現(xiàn)服務(wù)器端對(duì)多個(gè)客戶端的連接請(qǐng)求宙攻。
三:Socket應(yīng)用
1.客戶端發(fā)送二進(jìn)制文件(eg:圖片)到服務(wù)端。(詳見(jiàn)代碼)
2.Socket發(fā)送序列化對(duì)象胜茧。
四:UDP?(了解)
UDP:用戶數(shù)據(jù)報(bào)協(xié)議(User?Datagram?Protocol)
面向無(wú)連接、不可靠的協(xié)議。效率高呻顽。
1.DatagramSocket?此類表示用來(lái)發(fā)送和接收數(shù)據(jù)報(bào)包的套接字雹顺。
public?DatagramSocket(int?port)
send(DatagramPacket?p)?發(fā)送數(shù)據(jù)
void?receive(DatagramPacket?p)?接收數(shù)據(jù),此方法在接收到數(shù)據(jù)報(bào)前一直阻塞廊遍。
2.DatagramPacket?此類表示數(shù)據(jù)報(bào)包嬉愧。
public?DatagramPacket(byte[]?buf,int?length)
用來(lái)接收長(zhǎng)度為?length?的數(shù)據(jù)包。
public?DatagramPacket(byte[]?buf,int?length,InetAddress?address,int?port)
用來(lái)將長(zhǎng)度為?length?的包發(fā)送到指定主機(jī)上的指定端口號(hào)
public?InetAddress?getAddress()?返回與當(dāng)前客戶端通信的主機(jī)IP地址
public?byte[]?getData()?返回?cái)?shù)據(jù)緩沖區(qū)喉前。
public?int?getLength()?返回將要發(fā)送或接收到的數(shù)據(jù)的長(zhǎng)度没酣。
3.?InetAddress?表示IP地址
public?static?InetAddress?getByName(String?host)
public?String?getHostName()?獲取此IP地址的主機(jī)名。