1. 程式人生 > 程式設計 >Java實現TCP/IP協議的收發資料(服務端)程式碼例項

Java實現TCP/IP協議的收發資料(服務端)程式碼例項

這篇文章主要介紹了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地址)

服務端:

注:

串列埠除錯工具下載地址

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。