Socket 編程:編程
1.what is Socket網絡
網絡通訊的一種接口 socket
統稱:套接字spa
用於描述IP地址和端口,是一個通訊鏈的句柄。code
應用程序經過 「套接字」 向 網絡發出請求或者應答網絡請求。server
Socket 分爲兩部分:服務端 socket,和客戶端socket對象
(UDP 協議 是 一次性將數據打包,進行發送,不對數據傳輸過程當中 數據的丟失 負責接口
UDP 發送的數據 是有限的,傳輸速度比較快ip
)get
(TCP 協議 發數據時要求接收方 ,返回一個迴應,傳輸速度比較慢)
2.Socket 基本通訊模型
3.使用基於TCP協議的Socket
服務端代碼以下:
1.聲明一個ServerSocket 對象,並讓這個Socket 在指定端口監聽
ServerSocket serverSocket = new ServerSocket(端口號);
2.調用ServerSocket 的accept()方法,接受客戶端發送的請求
Socket socket = serverSocket.accept();
3.從Socket 中獲得 InputStream 對象
InputStream inputStream = socket.getInputStream();
4.從inputStream 中讀取客戶端發送的數據。
byte[] buffer= new byte[1024*4];
int temp=0;
while(temp=inputstream.read(buffer)!=-1){
system.out.println(new String(buffer,0,temp));
}
客戶端代碼以下:
1. 建立Socket 鏈接
Socket socket = new Socket("ip address",端口號);
2.寫入數據到 客戶端到outputStream中 經過socket 傳輸給 服務端。
//some codes simple。
4.使用基於UDP協議的Socket
UDP通訊 方式:
服務端:
1.建立DatagramSocket 對象,並指定監聽的端口號:
DatagramSocket socket = new DatagramSocket(端口號);
2. 建立空的 DatagramPacket 對象
byte data[]= new byte [1024];
DatagramPacket packet = new DatagramPacket(data,data.length);
3.使用receive方法 接收客戶端所發送的數據,存放到DatagramSocket對象中。
socket.receive(packet);
客戶端:
1.建立DatagramSocket 對象
DatagramSocket socket = new DatagramSocket(端口號);
2.建立一個InetAddress
InetAddress serverAddress= InetAddress.getByName(ip address);
3.建立 DatagramPacket 對象,並指定這個數據包點接收地址及端口號
4.調用Socket 對象的send 方法 ,發送數據。