1. 程式人生 > 程式設計 >Java Scoket實現雙向通訊程式碼詳解

Java Scoket實現雙向通訊程式碼詳解

你好我是辰兮,很高興你能來閱讀,本篇總結了Java Scoket類的相關知識,並且整理了實現雙向通訊的相關程式碼也有案例實現截圖,分享獲取新知,大家一起進步。

一、網路通訊

網路通訊,在網路中程式(傳送者)與程式(接受者)之間的資料互動。

通訊要素①ip + 埠號 ②傳輸協議

java.net包: 包含了Java用於網路通訊所需的類。

ServerSocket類,用於表示網路服務

建立網路服務(建立ServerSocket物件)

//構造器
public ServerSocket(int port)

//建立網路服務
ServerSocket server = new ServerSocket(9999);

接收網路請求

//接收網路請求的方法
public Socket accept()

//網路服務接收請求(阻塞)
Socket socket = server.accept();

Socket類,網路套接字,表示網路連線

傳送網路請求
//構造器
public Socket(String ip,int port)
//獲取網路連線中的輸入流
public InputStream getInputStream()
//獲取網路連線中的輸出流
public OuputStream getOutputStream()

二、接受者(Receiver)

程式碼實現如下:資訊的接受者

public class Receiver {

  public static void main(String[] args) {

    try {
      ServerSocket server = new ServerSocket(8888);
      Socket socket = server.accept();
      System.out.println("----程式已經連線++++");
      InputStream is = socket.getInputStream();
      OutputStream os = socket.getOutputStream();
      InputStreamReader isr = new InputStreamReader(is);
      BufferedReader br = new BufferedReader(isr);
      PrintWriter pw = new PrintWriter(os);
      Runnable r1 = new Runnable() {
        @Override
        public void run() {
          while (true) {
            // 接受資訊
            String str;
            try {
              str = br.readLine();
              System.out.println("sender的資訊" + str);
            } catch (IOException e) {
              e.printStackTrace();
            }
          }
        }
      };
      Runnable r2 = new Runnable() {
        @Override
        public void run() {
          // 返回資訊
          while (true) {
            Scanner scan = new Scanner(System.in);
            String msg = scan.nextLine();
            pw.println(msg);
            pw.flush();
          }
        }
      };
      
      Thread t1 = new Thread(r1);
      Thread t2 = new Thread(r2);
      t1.start();
      t2.start();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

三、傳送者(Sender)

程式碼實現如下:資訊的傳送者

public class Sender {

  public static void main(String[] args) {
    try {
      Socket socket = new Socket("192.168.1.6",8888);
      InputStream is = socket.getInputStream();
      OutputStream os = socket.getOutputStream();
      InputStreamReader isr = new InputStreamReader(is);
      BufferedReader br = new BufferedReader(isr);
      PrintWriter pw = new PrintWriter(os);
      Runnable r = new Runnable() {
        @Override
        public void run() {
          while (true) {
            // 傳送資訊

            try {
              Scanner scan = new Scanner(System.in);
              String msg = scan.nextLine();
              pw.println(msg);
              pw.flush();
            } catch (Exception e) {
            }

          }

        }
      };

      Runnable r2 = new Runnable() {
        @Override
        public void run() {
          // 接受傳送的資訊
          while (true) {
            String str;
            try {
              str = br.readLine();
              System.out.println("接受者receiver:" + str);
            } catch (IOException e) {
              e.printStackTrace();
            }
          }
        }
      };
      Thread t1 = new Thread(r);
      Thread t2 = new Thread(r2);
      t1.start();
      t2.start();

    } catch (UnknownHostException e) {

      e.printStackTrace();
    } catch (IOException e) {

      e.printStackTrace();
    }
  }
}

四、案例截圖

首先看到開啟Receiver,然後開啟Sender

開啟Sender後----看到Receiver控制檯顯示連線成功

Java Scoket實現雙向通訊程式碼詳解

Sender傳送資訊

Java Scoket實現雙向通訊程式碼詳解

Receiver接受到資訊,然後回覆

Java Scoket實現雙向通訊程式碼詳解

點開Sender控制檯,看到回覆的資訊然後繼續回覆

Java Scoket實現雙向通訊程式碼詳解

雙向溝通交流實現

Java Scoket實現雙向通訊程式碼詳解

到此這篇關於Java Scoket實現雙向通訊程式碼詳解的文章就介紹到這了,更多相關Java Scoket 雙向通訊內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!