繁体   English   中英

Java使代理套接字多线程

[英]Java making Proxy Socket multithreaded

我已经构建了一个java代理,它可以工作,但只允许1个客户端。 我知道我需要做多线程,这就是为什么我这样做,所以它打开了新的线程,但由于某种原因我不能让它工作...

这是我的Proxy类:

public class Proxy {

    private static ServerSocket server;
    private static int port = 9339;
    private static String originalHost = "game.boombeachgame.com";

    public static void main(String[] args) throws FileNotFoundException {
        System.out.println("INFO: Proxy started");
        new Thread(new Runnable() {

            @Override
            public void run() {
                Proxy.startThread();
            }

        }).start();
    }

    public static void startThread() {
        try {
            server = new ServerSocket(port);
            Socket clientSocket = server.accept();
            new Thread(new Server(originalHost)).start();
            new Thread(new Client(clientSocket)).start();
        } catch (Exception e) {
            System.out.println(e);
        }
    }


}

你需要的是一个运行循环的线程,它通过调用ServerSocket上的accept()方法来检查服务器套接字的新连接。 对于每个连接,您需要生成一个线程来处理该连接。

您的代码实际执行的操作是通过调用accept()一次来检查服务器套接字是否有新连接。 然后,您正确生成客户端线程以处理该连接。 但是,您再也不会调用accept()。 这就是您的代码有效的原因,但仅适用于一个客户端。 您还会为“服务器”对象生成一个线程; 我不确定这是怎么回事。

您需要更改的是在循环中运行“server.accept()”语句和关联的线程生成。 您还需要确保正确处理线程,以便不同的连接不会最终使用彼此的数据。 这可能需要以某种适当的方式连接“服务器”对象和“客户端”对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM