用eclipse 做JAVA聊天系统 Server启动后运行Client Server端出现java.net.SocketException: select failed

java.net.SocketException: select failed
at java.net.PlainSocketImpl.socketAccept(Native Method)
at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
at java.net.ServerSocket.implAccept(ServerSocket.java:453)
at java.net.ServerSocket.accept(ServerSocket.java:421)
at ChatServer.start(ChatServer.java:31)
at ChatServer.main(ChatServer.java:13)
对应的语句
ChatServer.start(ChatServer.java:31): Socket s = ss.accept();
ChatServer.main(ChatServer.java:13): new ChatServer().start();

据上面显示的是:连接失败
可能是连接语句出错了,好好检查一下细节方面
例如:
服务器端需要指定一个确定的端口号来创建创建服务器对象
Socket socket = new Socket("168.150.12.53",9999);

并用此端口号进行监听。。

Socket s = server.accept() ; // 监听窗口,等待连接

或:

Socket socket = new Socket(InetAddress.getLocalHost(),5678); // 向主机名为InetAddress.getLocalHost()的服务器申请连接

客户端需用服务器所在机器的ip以及服务器的端口作为参数创建一个Socket对象
Socket socket = new Socket("168.160.12.42",9998);
或:
Socket socket = new Socket(InetAddress.getLocalHost(),5678); // 向主机名为InetAddress.getLocalHost()的服务器申请连接

希望能给你一点点提示。。。呵呵追问

服务器的端口号我是这么定义的:ss = new ServerSocket(8080);
必须要加IP地址么?
TCP的东西不是很懂所以这点特别迷茫

追答

通过套接字声明服务器对象的时候,如果加上IP地址的话,就是指定一个IP地址,这个不是必须的。
如果不加的话,就是用默认的IP地址,当然就是本地的。
IP/TCP方面的东西是属于网络方面的
感觉大学里面有门课是《计算机网络》还是蛮有用的。
用的教材是谢希仁的《计算机网络》第五版,有时间的话。建议你能沉下心来,好好看看。。

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-06-13
既然是客户端出错,ss.accept();语句不应该出现在客户端代码中,这句话应该出现在服务器端代码中。
意思是说有请求来了,请求的套接字是s,服务器端持有一份。
我怀疑您没有真正理解java TCP编程,多查查资料吧。
第2个回答  2011-06-13
ss.accept应该是服务端的。
第3个回答  2011-06-14
mark
第4个回答  2012-03-21
你使用了网游加速器么?用360修复网络LSP
相似回答
大家正在搜