Java實現TCP/IP協議的收發資料(服務端)程式碼例項
阿新 • • 發佈:2020-01-07
這篇文章主要介紹了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地址)
服務端:
注:
串列埠除錯工具下載地址
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。