服务器未从客户端接收正确IP和端口的消息

时间:2012-12-22 01:30:21

标签: java sockets tcp port portforwarding

导致这种情况发生的原因是什么?

我把笔记本电脑搬到了朋友家,为这个项目工作。我在他的xfinity路由器上打开了相同的端口,并将我的代码的所有区域都改为他的IP。然而,似乎客户端正在发送消息,并且服务器从未通过这部分代码

System.out.println("running server!");
        int nreq = 1;
        try{
            //SET ME PORT
            ServerSocket sock = new ServerSocket(7332);
        for(;;){
            Socket newsock = sock.accept();
            System.out.println("Creating thread...");
            //Broken Old Login crap, needs reworked for map n stuff anyhow now
        //  Thread t = new ThreadHandler(newsock, nreq);
            Thread t = new RequestInterpreter(newsock, nreq);
            //t.run();
            t.start();
            nreq++;
        }
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }    

它永远不会打印“创建线程”。我不知道从哪里开始可能会出现问题?

唯一改变的是房屋,IP,路由器和互联网。在其他地方工作。那些改变会阻止客户发送

这是我写的测试客户端。

import java.io.DataInputStream;
import java.io.PrintWriter;
import java.net.Socket;




public class testClientConnection {

    public static void main(String[] args) {

        System.out.println("Starting testConnection");
        try{            

        Socket s = new Socket("xx.xx.xx.xxx", 7332);        

        DataInputStream fromServer = new DataInputStream(s.getInputStream());  
        PrintWriter toServer = new PrintWriter(s.getOutputStream(), true);    
        toServer.println("account name");
        toServer.println("password");
        toServer.println("Login");

        System.out.println("Sent message...");

        String response = fromServer.readLine().toString();
        //Toast the result here?  //testing

        System.out.println("response: " + response);
        if (response.equals("Login Success")) {

System.out.println("Login Success!!!");
        }
        }
        catch(Exception e){   /         
        }       
    }
}

巨大的更新!

好的,所以我的客户端是一部Android手机,我关闭了wifi,所以它落到了4g-LTE上。然后它奏效了。所以...有些东西阻止了客户端代码。可能是什么?

2 个答案:

答案 0 :(得分:0)

朋友路由器上的防火墙通常是个嫌疑人。 第二个嫌疑人是目标机器上的防火墙。

尝试禁用它们。

答案 1 :(得分:0)

问题是路由器上的NAT。

服务器不能在NAT设备后面工作,除非您设置端口转发,以便路由器知道从外部发送传入请求的位置。

相关问题