用netbeans做GUI:SocketException: Malformed reply from SOCKS server

最近的项目是由一些不同的软件相互协作组成的(是的,就是说这个系统有很多部分)。

各软件之间发信通过socket实现。

 

在系统联调的时候,很可能会发现bug。

而为了再现这个bug,我们就必须要将系统的其他部分完整的搭建起来。

这样一来有几个问题。

1. 完整的搭建这个环境比较困难。需要多台机器。

2. 完整的在线bug手顺比较麻烦,影响工作效率。

3. 环境中有些资源是受限的,比如我们手头的环境只能同时供一个人使用,

    这样在真实的环境中,就没有办法多人同时调查一个问题。

 

 

也就是这些原因,我们要做一个工具,能够往东西南北中,系统的每一个角落狂发各种socket报文。

GUI拿netbeans做。但是当我要创建一个Socket的时候,抛出了下面的异常。

(是的,helloworld中怎么创建怎么成功,在这个gui中怎么创建怎么不成功)

写道
java.net.SocketException: Malformed reply from SOCKS server
at java.net.SocksSocketImpl.readSocksReply(SocksSocketImpl.java:87)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:429)
at java.net.Socket.connect(Socket.java:519)
at java.net.Socket.connect(Socket.java:469)
at java.net.Socket.<init>(Socket.java:366)
at java.net.Socket.<init>(Socket.java:208)
at ... my source
 

malformed这个单词是难看的,畸形的,我的第一反应是这个异常信息可真难看,真畸形。

google了一下,发现了这里:

jdbc数据库连接失败 Malformed reply from SOCKS server

Java Database Connectivity (JDBC) - JDBC Microsoft SQL Problem

 

原来netbeans的GUI框架,为我设置了代理,

当使用公司的代理去连接区域网内的一个ip时,自然出了错,上面的jdbc错误也是一样。

 

解决方法有两个(都是找到相应的函数,加入一行相应的代码):

方法一

public void main(String[] args) {
     ProxySelector.getDefault();
     // code
}
 

 

方法二

@Override
protected void startup() {
     invoke System.setProperty("java.net.useSystemProxies", "false");
     // code
}
 

 

故事讲完了,虽然我被netbeans给伤害了,但是我还是坚强的认为netbeans很人性化。

另外,在我使用完成之后,我也更加的坚强的认为netbeans在开发java gui方面强大的一塌糊涂(以前只是听说,还有看了sun的一些视频,包括很酷的数据源绑定等等)。

目前我认为netbeans的GUI开发,比Eclipse的ve好,有些地方我甚至认为超过了vs2008.

 

当然其中最吸引我的一点是,他可以单独编辑JPanel。

是的,我在一个JFrame中可以放置很多个JPanel,而我可以针对每个JPanel单独编辑。

而不必受其他空间的干扰。

 

 

 

 

你可能感兴趣的:(java,.net,socket,SQL Server,Netbeans)