Java 實現TCP/IP協議的收發數據(服務端)


 

功能如下:

注:

  1. 只有服務端,沒有客戶端,測試時采用第三方軟件作為客戶端的。
  2. 收發數據目前能正常收發數據,只是中文的會變成亂碼顯示。
  3. 采用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地址)

服務端:

 

 注:

串口調試工具下載地址(或者在本人的百度網盤下載)

https://www.qqxiazai.com/down/10117.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM