1. 程式人生 > >socket 簡單介紹與例子

socket 簡單介紹與例子

java提供四種類型的網路通訊:

1、InelAddress:用於標識網路上的硬體資源,表示網際網路協議地址(IP);

2、URL:統一資源定位符  通過URL可以直接讀取或寫入網路上的資料;

3、Sockets:使用TCP協議實現網路通訊的Socket相關的類(客戶端的Socket類;伺服器端的ServerSocket類),

TCP協議是面向連線、可靠的、有序的,以位元組流的方式傳送資料基於TCP協議實現網路通訊;

4、Datagram:使用UDP協議,將資料儲存在資料報中,通過網路進行通訊;

在Socket程式設計模式中,Socket類用來建立客戶端程式,ServerSocket類用來建立服務端程式。

一般步驟:

1、建立服務端程式,通過ServerSocket類建立服務端程式,一般指定一個監聽埠,用來等待客戶端的連線;

2、建立客戶端程式,通過Socket類建立客戶端程式,需要指定伺服器地址與埠號;

一旦連線建立ServerSocket就可以獲得一個Socket例項,通過Socket開啟輸入、輸出流,進行通訊。


客戶端程式碼:

try {
    //例項化socket     訪問伺服器的ip加埠 
	Socket socket = new Socket("192.168.1.101",8888);
    //獲取輸入流 
	InputStream in = socket.getInputStream();
    // 緩衝區
	byte[] buffer = new byte[in.available()];
    //讀到緩衝區 
	in.read(buffer);
	String msg = new String(buffer);
    System.out.println(msg);
} catch (UnknownHostException e) {
	e.printStackTrace();
} catch (IOException e) {
	e.printStackTrace();
}
服務端程式碼:
try {
	//例項化伺服器套接字
	ServerSocket server = new ServerSocket(8888);
	while(true){
		//獲得客戶端套接字
		Socket client = server.accept();
		//獲得輸出流
		OutputStream out = client.getOutputStream();
		//輸出字串
		String msg = "Hello world!";
		//寫字串
		out.write(msg.getBytes());
		//關閉輸出流
		client.close();
	}
} catch (IOException e) {
	e.printStackTrace();
}

更加詳細介紹:http://blog.csdn.net/pony_maggie/article/details/47193863