您好,登錄后才能下訂單哦!
小編給大家分享一下Java如何實現TCP/IP協議的收發數據服務端,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
功能如下:
注:
只有服務端,沒有客戶端,測試時采用第三方軟件作為客戶端的。
收發數據目前能正常收發數據,只是中文的會變成亂碼顯示。
采用Thread類實現一個收發數據的線程。
服務端代碼:
import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; public class Server { //監聽端口 private static final int PORT = 60020; public static void main(String[] args) throws IOException { ServerSocket serverSocket = null; Socket socket = null; try { //建立服務器的Socket,并設定一個監聽的端口PORT serverSocket = new ServerSocket(PORT); //由于需要進行循環監聽,因此獲取消息的操作應放在一個while大循環中 while(true){ try { //建立跟客戶端的連接 socket = serverSocket.accept(); } catch (Exception e) { System.out.println("建立與客戶端的連接出現異常"); e.printStackTrace(); } ServerThread thread = new ServerThread(socket); thread.start(); } } catch (Exception e) { System.out.println("端口被占用"); e.printStackTrace(); } finally { serverSocket.close(); } } } //服務端線程類 //繼承Thread類的話,必須重寫run方法,在run方法中定義需要執行的任務。 class ServerThread extends Thread { private Socket socket ; InputStream inputStream; OutputStream outputStream; public ServerThread(Socket socket){ this.socket=socket; } public void run(){ try { while (true){ //接收客戶端的消息并打印 System.out.println(socket); inputStream=socket.getInputStream(); byte[] bytes = new byte[1024]; inputStream.read(bytes); String string = new String(bytes); System.out.println(string); //向客戶端發送消息 outputStream = socket.getOutputStream(); outputStream.write("OK".getBytes()); System.out.println("OK"); } } catch (Exception e) { System.out.println("客戶端主動斷開連接了"); //e.printStackTrace(); } //操作結束,關閉socket try{ socket.close(); }catch(IOException e){ System.out.println("關閉連接出現異常"); e.printStackTrace(); } } }
先開啟服務端,再開啟客戶端,進行操作。
客戶端:
(端口號選擇“TCPClient”,遠程填寫IP地址和程序里設定好的端口“60020”,本地選擇自己電腦的IP地址)
服務端:
以上是“Java如何實現TCP/IP協議的收發數據服務端”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。