Connection refused: connect 异常怎么解决?

王若冲 发布于 2011/08/29 14:58
阅读 196K+
收藏 1

服务器端代码:

ServerSocket server=new ServerSocket(9002);
System.out.println("服务成功启动!");
Socket socket=server.accept();
System.out.println("连接成功!");

客户端代码:

Socket socket= new Socket();
SocketAddress sa;
sa = new InetSocketAddress(InetAddress.getLocalHost(), 9002);
socket.connect(sa, 10000);

服务器中输出了“连接成功!”,说明了服务器已经成功在本地端口进行监听,客户端连接的端口号和IP地址应该也没有问题,那么为什么还会出现上述异常呢?

加载中
0
scl33
scl33

怀疑是不是你的服务器端代码过早结束了. 一般服务器端监听是一个独立的线程, 一直循环, 每次接受, 都将socket保存, 并交由新的线程处理和进行通讯.

你试试在服务端最后加个Thread.sleep(50000);或者Socket socket2=server.accept();试试, 如果是过早结束的话, 应该就好了.

0
大东哥
大东哥

你这个是短连接,响应完成,立既断开了。

serverSocket   =   new   ServerSocket(PORT);  
serverSocket.setSoTimeout(2000);  //设置超时
转成长连接,最简单的解决办法。
0
scl33
scl33

测试了你的代码, 没有发生任何错误...!

只能胡乱猜测了!

0
王若冲
王若冲
谢谢大家回答,首先是上面的代码运行的时候,服务器一直在监听,客户端运行连接不上发生异常。刚刚把 InetAddress.getLocalHost()该成了"127.0.0.1",就连上了。问了同事,他说可能是因为本地无法将机器名解析为IP地址,是这样吗?
帝一流
帝一流
可能是你系统的配置文件里,没有将localhost和127.0.0.1关联,可以再c盘系统文件中配置
返回顶部
顶部