2010-09-23 47 views
0

我有一个套接字连接到代理,然后到我指定的远程服务器。不过,我想从代理多个连接到删除服务器。所以我想创建4个套接字到同一个代理,并从4个套接字连接到远程服务器。java中的套接字/代理问题

当我这样做不起作用,它只连接到代理一次。

这里是伪代码:

static Socket[] liveCon = new Socket[300]; 
// This is the class that assigns a proxy and connects 
// it is a temporary thread that connects and ends. 
sockClass sockets = new sockClass; 

class main { 
    for (int i = 0; i < livecon.length; i++) { 
     sockets[i].start(); // Thread ends after it is connected 
    } 
} 

class sockClass{ 
    main.liveCon[index] = new Socket(proxy); 
    main.liveCon[index].connect(ep); 
    main.liveCon[index].setPerformancePreferences(1, 2, 0); 
    if (main.liveCon[index].isConnected() == true) { 
     myOutput = new PrintStream(main.liveCon[index].getOutputStream()); 
     main.liveCon[index].setKeepAlive(true); 
    } 
} 

回答

0

听起来像是你不使用线程,而是你试图连接到代理顺序。

既然你没有发布一个问题的样本是很难出手的麻烦。

尝试运行您的程序4次,而不是看看问题出现在您的代码或代理中。

我希望这会有所帮助。

+0

是啊即时通讯不使用线程,即时通讯使用插座数组。不是线程连接的问题?如果是的话,有什么办法可以解决它,而不诉诸于线程。 – Kalman123 2010-09-23 04:48:47

+0

使用不同的程序。问题是。你有一个套接字数组,右边,第二个套接字只在第一个完成后连接,第三个只在第二个接下来之后连接,等等。所以,当你想要的是并行连接的时候,你是按顺序连接它们的。是不是很难(当你知道如何做到这一点:P与任何东西)但是,这(线程)是你遇到的主要问题。 – OscarRyz 2010-09-23 05:20:57

+0

为什么你需要同时连接4个插座? – Kalman123 2010-09-23 05:33:27

0

如果你没有使用线程,你不能正确地做到这一点,除非你去非阻塞I/O。

+0

我不明白为什么这是一个问题,但。我所有的套接字都尝试连接到单个代理,但只有1个连接成功。你能解释为什么会发生? – Kalman123 2010-09-23 17:53:38

+0

不是没有看到您的代码。但这是毫无意义的。修复了每个套接字使用线程的问题,并且有一点需要讨论。 – EJP 2010-09-24 10:13:31

+0

我将伪代码添加到主帖 – Kalman123 2010-09-24 18:49:24