连接到服务器时客户端套接字超时
Posted
技术标签:
【中文标题】连接到服务器时客户端套接字超时【英文标题】:Client socket times out when connecting to Server 【发布时间】:2013-11-30 11:21:53 【问题描述】:当我尝试使用套接字将物理设备连接到服务器时遇到问题。在服务器端,它似乎不接受任何连接,而在客户端,套接字超时。任何想法为什么会发生这种情况?
我在下面提供我的代码
服务器代码:
public void run()
// TODO Auto-generated method stub
try
gamePending = false;
pid = 0;
while(pid < 2)
System.out.println("Hello from run loop on game");
Socket tempSocket = server.accept();
System.out.println("Client connected at " + tempSocket.getLocalPort());
PrintWriter tempWriter = new PrintWriter(new BufferedWriter (new OutputStreamWriter(tempSocket.getOutputStream())),true);
tempWriter.println("" + pid);
players[pid] = new Client(tempSocket, pid, this);
players[pid].start();
gamePending = true;
if(pid == 0)sendMsg(pid, "waiting for other player");
pid++;
catch(Exception e)
System.out.println("There has been an Error. Game will be Terminated.");
//Start new game for the next two players...
new Game();
客户端:
public void run()
// Connects to the Server....
try
socket = new Socket("192.168.1.116", 9090);
catch (UnknownHostException e)
// TODO Auto-generated catch block
e.printStackTrace();
catch (IOException e)
// TODO Auto-generated catch block
e.printStackTrace();
try
in = new BufferedReader (new InputStreamReader(socket.getInputStream()));
catch (IOException e1)
// TODO Auto-generated catch block
e1.printStackTrace();
try
out = new PrintWriter(socket.getOutputStream(),true);
catch (IOException e)
// TODO Auto-generated catch block
e.printStackTrace();
11-16 23:32:11.016:W/System.err(24213):java.net.ConnectException:无法连接到 /192.168.1.116(端口 9090):连接失败:ETIMEDOUT(连接超时) 11-16 23:32:11.016: W/System.err(24213): 在 libcore.io.IoBridge.connect(IoBridge.java:114) 11-16 23:32:11.016: W/System.err(24213): 在 java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192) 11-16 23:32:11.026: W/System.err(24213): 在 java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459) 11-16 23:32:11.026: W/System.err(24213): 在 java.net.Socket.connect(Socket.java:842) 11-16 23:32:11.026: W/System.err(24213): at vatos.locos.spheroknockout.Connection.run(Connection.java:22) 11-16 23:32:11.026: W/System.err(24213): 在 java.lang.Thread.run(Thread.java:841) 11-16 23:32:11.026:W/System.err(24213):原因:libcore.io.ErrnoException:连接失败:ETIMEDOUT(连接超时)
【问题讨论】:
尝试从客户端远程登录到您的服务器 IP/端口。它连接了吗? 【参考方案1】:我不能确定(因为它没有出现在您的代码中),但我认为服务器没有在同一个端口 (9090) 上进行冲洗。这可能是主要问题,但服务器或客户端也可能被防火墙阻止(即使它们在同一台机器上运行)。
【讨论】:
以上是关于连接到服务器时客户端套接字超时的主要内容,如果未能解决你的问题,请参考以下文章