久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

java怎么實現端口轉發

149次閱讀
沒有評論

共計 1520 個字符,預計需要花費 4 分鐘才能閱讀完成。

在 Java 中,可以使用 Socket 類來實現端口轉發。以下是一個簡單的示例代碼,演示了如何將本地的一個端口轉發到另一個遠程主機的端口。

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

public class PortForwardingExample {public static void main(String[] args) {int localPort = 12345; // 本地端口 
        String remoteHost = "example.com"; // 遠程主機 
        int remotePort = 80; // 遠程端口 

        try {// 創建本地服務器套接字 
            ServerSocket serverSocket = new ServerSocket(localPort);
            System.out.println(" 等待客戶端連接...");

            while (true) {// 監聽客戶端連接 
                Socket clientSocket = serverSocket.accept();
                System.out.println(" 客戶端連接成功!");

                // 創建與遠程主機的套接字連接 
                Socket remoteSocket = new Socket(remoteHost, remotePort);

                // 創建線程進行數據轉發 
                Thread inputThread = new Thread(new ForwardingHandler(clientSocket.getInputStream(), remoteSocket.getOutputStream()));
                Thread outputThread = new Thread(new ForwardingHandler(remoteSocket.getInputStream(), clientSocket.getOutputStream()));

                inputThread.start();
                outputThread.start();}
        } catch (IOException e) {e.printStackTrace();
        }
    }

    // 數據轉發處理器 
    static class ForwardingHandler implements Runnable {private final InputStream input;
        private final OutputStream output;

        public ForwardingHandler(InputStream input, OutputStream output) {this.input = input;
            this.output = output;
        }

        @Override
        public void run() {byte[] buffer = new byte[4096];
            int bytesRead;

            try {while ((bytesRead = input.read(buffer)) != -1) {output.write(buffer, 0, bytesRead);
                    output.flush();}
            } catch (IOException e) {e.printStackTrace();
            }
        }
    }
}

上述代碼創建一個 ServerSocket 對象來監聽本地指定端口上的連接。當有客戶端連接成功后,會通過 Socket 對象與遠程主機建立連接。然后,創建兩個線程來分別處理從客戶端到遠程主機和從遠程主機到客戶端的數據轉發。數據轉發處理器實現了 Runnable 接口,通過讀取輸入流的數據,并將其寫入輸出流來實現轉發。

丸趣 TV 網 – 提供最優質的資源集合!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-13發表,共計1520字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 扶沟县| 咸丰县| 古浪县| 化德县| 龙门县| 吴旗县| 临夏市| 清镇市| 南投县| 凤翔县| 晋江市| 龙海市| 陇西县| 苍梧县| 茶陵县| 牙克石市| 宜良县| 南安市| 高邑县| 兴城市| 盐亭县| 丹巴县| 金阳县| 玉环县| 靖西县| 临朐县| 宁晋县| 南澳县| 屯昌县| 东莞市| 吉安县| 靖宇县| 卫辉市| 沾益县| 奉贤区| 南皮县| 塔河县| 舟山市| 收藏| 梨树县| 鱼台县|