TCP通訊客戶端和服務端簡單程式碼實現

gjw7a171發表於2020-11-05

客戶端Socket中的方法:

  • Socket(InetAddress address, int port)
  •       建立一個流套接字並將其連線到指定 IP 地址的指定埠號。
    
  • InputStream getInputStream()
  •       返回此套接字的輸入流。
    
  • OutputStream getOutputStream()
  •       返回此套接字的輸出流
    

InputStream中方法:

  • int read(byte[] b)
  •      從輸入流中讀取一定數量的位元組,並將其儲存在緩衝區陣列 b 中。
    

客戶端程式

 package JAVA_Test7;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;

public class TCPClient {
    public static void main(String[] args) throws IOException {
        //1.建立一個客戶端物件Socket,構造方法繫結ip地址和埠號
        Socket socket = new Socket("127.0.0.1",8888);
        //2.使用Socket中的方法獲得OutputStream物件
        OutputStream os = socket.getOutputStream();
        //3.使用位元組輸出流OutputStream中的Write方法傳送資料
        os.write("你好伺服器".getBytes());
        //4.使用Socket物件中的方法getInputStream()獲得InputStream
        InputStream is = socket.getInputStream();
        //5.讀取資訊
        byte bytes[] = new byte[1024];
        int len = is.read(bytes);
        System.out.println(new String(bytes,0,len));

        socket.close();
    }
}
  • TCP伺服器端ServerSocket
    *ServerSocket(int port)
  •       建立繫結到特定埠的伺服器套接字。
    
  • Socket accept()
  •       偵聽並接受到此套接字的連線
    

流程

  • 1.建立伺服器ServerSocket物件
  • 2.使用ServerSocket中的accept方法獲得請求的客戶端Socket物件
  • 3.使用Socket中的方法獲得InputStream網路位元組輸入流
  • 4.使用InputStream中的read()方法,讀取資料
  • 5.使用Socket中的方法獲得OutputStream輸出流
  • 6.使用OutputStream中的write()方法,給客戶端傳送資料

服務端程式

package JAVA_Test7;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;


public class TCPServer {
    public static void main(String[] args) throws IOException {
        //1.建立伺服器ServerSocket物件
        ServerSocket serverSocket = new ServerSocket(8888);
        //2.使用ServerSocket中的accept方法獲得請求的客戶端Socket物件
        Socket socket = serverSocket.accept();
        //3.使用Socket中的方法獲得InputStream網路位元組輸入流
        InputStream is = socket.getInputStream();
        //4.使用InputStream中的read()方法,讀取資料
        byte []bytes = new byte[1024];
        int len = is.read(bytes);
        System.out.println(new String(bytes,0,len));
        //5.使用Socket中的方法獲得OutputStream輸出流
        OutputStream os = socket.getOutputStream();

        //6.使用OutputStream中的write()方法,給客戶端傳送資料
        os.write("收到謝謝".getBytes());

        socket.close();
        serverSocket.close();
    }
}

相關文章