Java " />

扫描二维码下载沐宇APP

沐宇

微信扫码使用沐宇小程序

沐宇

java鎬庝箞瀹炵幇绔彛杞彂

扬州沐宇科技
2023-11-03 17:53:35
Java

鍦↗ava涓紝鍙互浣跨敤Socket绫绘潵瀹炵幇绔彛杞彂銆備互涓嬫槸涓€涓畝鍗曠殑绀轰緥浠g爜锛屾紨绀轰簡濡備綍灏嗘湰鍦扮殑涓€涓鍙h浆鍙戝埌鍙︿竴涓繙绋嬩富鏈虹殑绔彛銆?/p>

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) {
                // 鐩戝惉瀹㈡埛绔繛鎺?/span>
                Socket clientSocket = serverSocket.accept();
                System.out.println("瀹㈡埛绔繛鎺ユ垚鍔?");

                // 鍒涘缓涓庤繙绋嬩富鏈虹殑濂楁帴瀛楄繛鎺?/span>
                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();
        }
    }

    // 鏁版嵁杞彂澶勭悊鍣?/span>
    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();
            }
        }
    }
}

涓婅堪浠g爜鍒涘缓涓€涓猄erverSocket瀵硅薄鏉ョ洃鍚湰鍦版寚瀹氱鍙d笂鐨勮繛鎺ャ€傚綋鏈夊鎴风杩炴帴鎴愬姛鍚庯紝浼氶€氳繃Socket瀵硅薄涓庤繙绋嬩富鏈哄缓绔嬭繛鎺ャ€傜劧鍚庯紝鍒涘缓涓や釜绾跨▼鏉ュ垎鍒鐞嗕粠瀹㈡埛绔埌杩滅▼涓绘満鍜屼粠杩滅▼涓绘満鍒板鎴风鐨勬暟鎹浆鍙戙€傛暟鎹浆鍙戝鐞嗗櫒瀹炵幇浜哛unnable鎺ュ彛锛岄€氳繃璇诲彇杈撳叆娴佺殑鏁版嵁锛屽苟灏嗗叾鍐欏叆杈撳嚭娴佹潵瀹炵幇杞彂銆?/p>

扫码添加客服微信