public SocksProxy() throws IOException
{
try
{
Listen = new ServerSocket(9990); while (true)
{
NewClient = Listen.accept();
Socks4 proxy = new Socks4(NewClient);

try {
proxy.ConnectWithServer();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} catch (IOException e)
{
e.printStackTrace();
} finally {
Listen.close();
}
}我监听了9990端口之后,始终停在NewClient = Listen.accept();这一行上。
用netstat -an查看了一下,9990端口是开启了,不过对应的ip是0.0.0.0我是IE做的代理客户端,请教大家一下,为何始终accept不到新的套接字呢~

解决方案 »

  1.   

    Listen.accept()停在这一行上是因为,有Client请求过来才会继续往下执行。
    你再写个Client去连就可以了。:
    Socket client = new Socket(ip,port);
      

  2.   

    我用IE当做客户端去连得。
    我的IE设置的肯定正确,因为我用C++写的代理服务器都能收到他的请求。
    但是不知道为什么这个java的收不到,肯定有什么地方写错了。
      

  3.   

     Listen = new ServerSocket(9990);
    如何能让他在127.0.0.1上面监听,而不是0.0.0.0呢?
      

  4.   

    我监听了9990端口之后,始终停在NewClient = Listen.accept();这一行上。你要监听 当然要在这一行上一直监听者
      

  5.   

    我自己测试了下,的确是这样,说明你的端口是监听着的,你可以自己写个socket或者 测试工具 连一下看,如果没问题那就你那个C++程序连的问题了
      

  6.   

    建立tcp/ip 连接后  netstat -an  才能看到网络连接
      

  7.   

    这里的监听无所谓监听哪个ip了,只要你侦听了那个端口,那么所有ip来请求该端口都会被accept的.你在ie请求的时候确定输入了9990端口号吗?然后是防火墙可能会屏蔽掉,但如果c++的能的话估计和防火墙没关系.你还是先用java写个new Socket(127.0.0.1,9990);试试能不能连接吧,一步步检测
      

  8.   

    还有一点要注意的,你在accept后,如果没用获取输入输出流也会阻塞的
      

  9.   

    http://topic.csdn.net/u/20070102/19/58cc886d-f5b9-49ac-a469-7e0a0839a7c8.html我也遇到同样问题。者有几个链接希望参考一下