Java Socket是Java中的標準API,它提供了網絡通信的底層庫。基于TCP協議的Socket通信是比較常見的一種方式。
而TCP是面向連接的、可靠的傳輸協議,它能夠確保數據的可靠性,在傳輸過程中自動處理丟失、重復和不按順序的數據包,并能夠保證數據的傳輸順序。所以,在需要傳輸可靠數據的場景下,可以使用TCP協議。
// 使用Java Socket創建TCP Client Socket socket = new Socket("localhost", 8000); // 發送數據到Server OutputStream os = socket.getOutputStream(); String message = "123"; byte[] data = message.getBytes(); os.write(data); // 接收Server返回的數據 InputStream is = socket.getInputStream(); byte[] buffer = new byte[1024]; int len = is.read(buffer); String result = new String(buffer, 0, len); System.out.println("Server返回的數據:" + result); // 關閉Socket socket.close();
除了基于TCP的Socket通信,Java Socket還支持基于UDP協議的通信。
UDP是面向無連接的傳輸協議,它不保證數據的可靠性,數據傳輸過程中可能會出現丟包、亂序等情況。但是,UDP協議具有傳輸速度快、傳輸數據較小等優點,適用于一些對數據實時性要求較高、數據傳輸量較小的場景。
// 使用Java Socket創建UDP Client DatagramSocket client = new DatagramSocket(); // 發送數據到Server String message = "123"; byte[] data = message.getBytes(); InetAddress Address = InetAddress.getByName("localhost"); DatagramPacket packet = new DatagramPacket(data, data.length, Address, 8000); client.send(packet); // 接收Server返回的數據 byte[] buffer = new byte[1024]; DatagramPacket response = new DatagramPacket(buffer, buffer.length); client.receive(response); String result = new String(response.getData(), 0, response.getLength()); System.out.println("Server返回的數據:" + result); // 關閉Socket client.close();