本机通过代理服务器上网,想和外面一台有公网ip的机器建立连接,查了api以后先创建了一个proxy的对象,在socket的构造函数中有一个Socket(Proxy proxy),于是试图这样写:
Socket socket= new Socket(proxy),可是就是这句话都会报错
Exception in thread "main" java.lang.IllegalArgumentException: Invalid Proxy
at java.net.Socket.<init>(Unknown Source)
开始怀疑是proxy对象没有建立对,可是后来在URL类中用过了URLConnection uc=url.openConnection(proxy);这个方法是完全可以的而且可以得到外面网站的内容,说明这个proxy对象应该没有问题啊,所以现在不知道socket如果要应用代理应该怎么写好,怎么才能让socket和代理外的网站建立连接呢,是不是我少写了什么?我的目的是这样,因为本地的代理服务器有些限制,所以希望绕过这台代理服务器,跟另外的服务器建立连接发送数据,socket如果能建立连接那当然是最好的,如果不行那么还有别的什么方法可以实现吗?

解决方案 »

  1.   

    Proxy.Type分HTTP(Represents proxy for high level protocols such as HTTP or FTP)和SOCKS(Represents a SOCKS (V4 or V5) proxy)。
    你现在的代理多半是http代理吧,所以用Socket就抛异常,但是用URLConnection就可以。
      

  2.   

    恩对的我刚才也发现了,换成socks就不出错了,可是我的代理服务器好像只支持http代理,那这样就没有办法和远程服务器建立socket连接了吗?