socket 簡單介紹與例子
阿新 • • 發佈:2019-01-06
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