socket服務端和客戶端編碼方式不一致將有可出現中文亂碼問題,因此兩邊設成一樣即可。
socket服務端發送數據時設定編碼方式:
PrintWriter output = new PrintWriter(new OutputStreamWriter(socket.getOutputStream(),"UTF-8"),true);
output.println("你好");
客戶端接收數據時設定編碼方式:
BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream(),"UTF-8"));
System.out.println(input.readLine());
拓展資料:
socket是什麼?
所謂套接字(Socket),就是對網絡中不同主機上的應用進程之間進行雙向通信的端點的抽象。一個套接字就是網絡上進程通信的一
端,提供了應用層進程利用網絡協議交換數據的機制。從所處的地位來講,套接字上聯應用進程,下聯網絡協議棧,是應用程序透過
網絡協議進行通信的接口,是應用程序與網絡協議棧進行交互的接口。
套接字是通信的基石,是支援TCP/IP協議的路通信的基本操作單元。可以將套接字看作不同主機間的進程進行雙間通信的端點,它構
成了單個主機內及整個網絡間的編程介面。套接字存在於通信域中,通信域是爲了處理一般的線程透過套接字通信而引進的一種抽象
概念。套接字通常和同一個域中的套接字交換數據(數據交換也可能穿越域的界限,但這時一定要執行某種解釋程序),各種進程使用
這個相同的域互相之間用Internet協議簇來進行通信 。
Socket(套接字)可以看成是兩個網絡應用程序進行通信時,各自通信連接中的端點,這是一個邏輯上的概念。它是網絡環境中進程間
通信的API(應用程序編程接口),也是可以被命名和尋址的通信端點,使用中的每一個套接字都有其類型和一個與之相連進程。通信時
其中一個網絡應用程序將要傳輸的一段資訊寫入它所在主機的 Socket中,該 Socket透過與網絡接口卡(NIC)相連的傳輸介質將這段信
息送到另外一臺主機的 Socket中,使對方能夠接收到這段資訊。 Socket是由IP位址和端口結合的,提供嚮應用層進程傳送數據包的
機制。