亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java 中如何實現模擬TCP協議進行傳輸數據

發布時間:2020-11-12 16:12:05 來源:億速云 閱讀:181 作者:Leah 欄目:編程語言

java 中如何實現模擬TCP協議進行傳輸數據?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

一、創建TCP傳輸的客戶端

1、建立TCP客戶端的Socket服務,使用的是Socket對象,建議該對象一創建就明確目的地,即要連接的主機;

2、如果連接建立成功,說明數據傳輸通道已建立,該通道就是Socket流,是底層建立好的,既然是流,說著這里既有輸入流,又有輸出流,想要輸入流或者輸出流對象,可以通過Socket來獲取,可以通過getOutputStream()和getInputStream()來獲取;

3、使用輸出流,將數據寫出;

4、關閉Socket服務。

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

public class Client {
  public static void main(String[] args) throws IOException {

    // 1、創建客戶端的Socket服務
    Socket socket = new Socket("192.168.1.100", 10002);

    // 2、獲取Socket流中輸入流
    OutputStream out = socket.getOutputStream();

    // 3、使用輸出流將指定的數據寫出去
    out.write("TCP is coming !".getBytes());

    // 4、關閉Socket服務
    socket.close();
  }
}

二、創建TCP傳輸的服務端

1、建立TCP服務端的的Socket服務,通過ServerSocket對象;

2、服務端必須對外提供一個端口,否則客戶端無法連接;

3、獲取連接過來的客戶端對象;

4、通過客戶端對象來獲取Socket流,讀取客戶端發來的數據;

5、關閉資源,關客戶端,關服務端。

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

public class Server {
  public static void main(String[] args) throws IOException {

    // 1、創建客戶端對象
    ServerSocket ss = new ServerSocket(10002);

    // 2、獲取連接過來的客戶端對象
    Socket s = ss.accept();

    String ip = s.getInetAddress().getHostAddress();

    // 3、通過Socket對象獲取輸入流,讀取客戶端發來的數據
    InputStream in = s.getInputStream();

    byte[] buf = new byte[1024];

    int len = in.read(buf);
    String text = new String(buf, 0, len);
    System.out.println(ip + ":" + text);

  // 4、關閉資源
    s.close();
    ss.close();
  }
}

三、優化TCP傳輸的客戶端和服務端

在本部分,我們對前兩部分的內容進行優化,實現TCP傳輸模式下的客戶端和服務端的交互功能。

/**
*優化TCP傳輸的客戶端
*/
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;

public class ClientUpdate {
  public static void main(String[] args) throws IOException {

    Socket socket = new Socket("192.168.1.100", 10002);

    OutputStream out = socket.getOutputStream();

    out.write("tcp!".getBytes());

    // 讀取服務端返回的數據,使用Socket讀取流
    InputStream in = socket.getInputStream();
    byte[] buf = new byte[1024];

    int len = in.read(buf);

    String text = new String(buf, 0, len);

    System.out.println(text);

    socket.close();
  }
}
/**
*優化TCP傳輸的服務端
*/
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class ServerUpdate {
  public static void main(String[] args) throws IOException {

    // 1、創建服務端對象
    ServerSocket ss = new ServerSocket(10002);

    // 2、獲取連接過來的客戶端對象
    Socket s = ss.accept(); //accept方式為阻塞式方法

    String ip = s.getInetAddress().getHostAddress();

    // 3、通過Socket對象獲取輸入流,要讀取客戶端發來的數據
    InputStream in = s.getInputStream();

    byte[] buf = new byte[1024];

    int len = in.read(buf);
    String text = new String(buf, 0, len);
    System.out.println(ip + ":" + text);

    // 使用客戶端的Socket對象的輸出流給客戶端返回數據
    OutputStream out = s.getOutputStream();
    out.write("收到".getBytes());

    s.close();
    ss.close();
  }
}

四、創建英文大寫轉換服務器

應用TCP(Transmission Control Protocol,傳輸控制協議)的相關性質,創建一個基于TCP傳輸下的英文大寫轉換服務器,要求:客戶端輸入字母數據,發送給服務端;服務端收到數據后顯示在控制臺,并將該數據轉成大寫字母返回給客戶端;直到客戶端輸入“over”為止,轉換結束。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

public class TransClient {
  public static void main(String[] args) throws IOException {
    /**
     * 思路:創建客戶端
     * 1、創建Socket客戶端對象
     * 2、獲取鍵盤錄入的數據
     * 3、將錄入的信息發送給Socket輸出流
     * 4、讀取服務端的數據并返回的大寫數據
     */

    // 1、創建Socket客戶端對象
    Socket s = new Socket("192.168.1.100", 10004);

    // 2、獲取鍵盤錄入
    BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));

    // 3、Socket輸出流
    PrintWriter out = new PrintWriter(s.getOutputStream(), true);

    // 4、Socket輸入流,讀取服務端的數據并返回的大寫數據
    BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));

    String line = null;

    while ((line = bufr.readLine()) != null) {

      if ("over".equals(line))
        break;
      out.println(line);

      // 讀取服務端返回的一行大寫數據
      String upperStr = bufIn.readLine();
      System.out.println(upperStr);
    }
    s.close();
  }
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class TransServer {
  public static void main(String[] args) throws IOException {
    /**
     * 思路:創建服務端
     * 1、創建SeverSocket客戶端對象
     * 2、獲取Socket流
     * 3、通過Socket, 讀取客戶端發過來的需要轉換的數據
     * 4、顯示在控制臺上
     * 5、將數據轉換成大寫返回給客戶端
     */

    // 1、創建SeverSocket對象
    ServerSocket ss = new ServerSocket(10004);

    // 2、獲取Socket對象
    Socket s = ss.accept();

    // 獲取IP地址
    String ip = s.getInetAddress().getHostAddress();
    System.out.println(ip + "......connected");

    // 3、獲取Socket讀取流,并裝飾
    BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));

    // 4、獲取Socket的輸出流,并裝飾
    PrintWriter out = new PrintWriter(s.getOutputStream(), true);

    String line = null;
    while ((line = bufIn.readLine()) != null) {
      System.out.println(line);
      out.println(line.toUpperCase());
    }

    s.close();
    ss.close();
  }
}

關于java 中如何實現模擬TCP協議進行傳輸數據問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

锡林郭勒盟| 三穗县| 额济纳旗| 保亭| 浪卡子县| 封丘县| 樟树市| 莫力| 新宁县| 扎赉特旗| 马公市| 金寨县| 石河子市| 菏泽市| 犍为县| 呼和浩特市| 府谷县| 泰顺县| 舞阳县| 襄城县| 大埔县| 绵阳市| 易门县| 巫溪县| 攀枝花市| 万源市| 新乡县| 桦川县| 扎鲁特旗| 家居| 新田县| 当涂县| 房山区| 霍林郭勒市| 高平市| 夹江县| 孝义市| 威信县| 普兰店市| 论坛| 枣阳市|