Java套接字不';我不能在windows上工作

Java套接字不';我不能在windows上工作,java,windows,sockets,Java,Windows,Sockets,我正在尝试制作一个程序,我想在同一个wifi中连接两台设备,所以我尝试使用插座 我在我的pc上运行服务器代码,在android设备上运行客户端代码。 问题是服务器在windows上不工作,但在linux上工作。 我断开了所有防火墙、windows和avast的连接,但仍然存在相同的问题。 我曾尝试使用linux机器作为服务器,windows作为客户端,它工作得非常好 当我尝试获取套接字“Socket s=ss.accept();”时,我打印了一些图片以查看它停止的位置,windows中的服务器端

我正在尝试制作一个程序,我想在同一个wifi中连接两台设备,所以我尝试使用插座

我在我的pc上运行服务器代码,在android设备上运行客户端代码。 问题是服务器在windows上不工作,但在linux上工作。 我断开了所有防火墙、windows和avast的连接,但仍然存在相同的问题。 我曾尝试使用linux机器作为服务器,windows作为客户端,它工作得非常好

当我尝试获取套接字“Socket s=ss.accept();”时,我打印了一些图片以查看它停止的位置,windows中的服务器端也停止了。我没有收到任何错误,只是卡在那里了

我不知道会出什么问题

服务器端

   int port = 2002;  
   try {  
            ServerSocket ss = new ServerSocket(port);

            Socket s = ss.accept();

            InputStream is = s.getInputStream();  
            ObjectInputStream ois = new ObjectInputStream(is); 

            System.out.println((String)ois.readObject());  
            is.close();  
            s.close();  
            ss.close();  
   }catch(Exception e){System.out.println(e);}  
客户端:

try{  
            String hostPortatil = "192.168.1.131";
            String host = "192.168.174.1";
            int port = 2002;
            Socket s = new Socket(hostPortatil, port);  

            OutputStream os = s.getOutputStream();

            ObjectOutputStream oos = new ObjectOutputStream(os);  

            oos.writeObject(new String("another object from the client"));  

            oos.close();  
            os.close();  
            s.close();  
}catch(Exception e){
            System.out.println(e);
}

很可能您尚未将Windows防火墙配置为接受端口2002上的连接。

您的服务器配置为侦听端口9999上的连接,但客户端使用端口2002进行连接

编辑:

在windows上启动服务器并打开cmd.exe:

netstat -an|findstr "2002"
您应该看到您的java进程正在侦听连接。如果没有,那就有问题了。在linux服务器中打开一个shell:

telnet 192.168.1.131 2002

您应该从linux服务器连接到windows服务器。同样,如果没有错误的话,也有一些是错误的。

我认为这是因为您在Windows上运行程序的服务器端,该程序将本地主机ip分配给服务器端,并且该ip肯定不同于本地Wi-Fi和热点连接的ip。 我使用localhost在Windows上运行示例应用程序的客户端和服务器端,在两个不同的平台上使用Wi-Fi和hotspot连接的ip进行了工作,但没有工作。
我想把电脑换成服务器就可以解决这个问题了

accept()方法正在等待客户端建立TCP连接,这就是没有输出也没有错误的原因,因此问题似乎出在客户端。

“不工作”?它会崩溃吗?如果没有,会发生什么?我非常肯定Java套接字在windows上可以工作;)你是否检查过你是否拥有Android中所需的所有权限?你是否连接到正确的端口。我看到客户端试图连接到端口2002,而服务器监听9999。否则,我在代码中看不到任何错误。@Fildor我不认为他声称Java套接字在windows中被破坏了。他说这对他的案子不起作用,他不明白为什么。但是,我同意,在这里,我会先把矛头指向客户端,然后再指向服务器。嘿,对不起,解释得不太好。我复制代码时出错,两者都连接到端口2002。我的观点是,使用linux作为服务器的代码是一样的,但使用windows作为服务器的代码是不一样的。在Windows中,代码卡在ss.accept()行中。我打赌将代码复制到SO会出错。如果您在linux中运行服务器,而在Windows中运行客户端,我很难相信这会起作用。我尝试过。从windows cmd我得到这个:TCP 0.0.0.0:2002 0.0.0:0侦听TCP[::]:2002[::]:0侦听,从linux我想我必须使用telnet和windows机器ip所以192.168.174.1,我得到这个:尝试192.168.174.1。。。telnet:无法连接到远程主机:连接超时我试图断开所有防火墙以防万一。windows计算机上显示java进程正在正确侦听并绑定到所有接口,如果无法从linux计算机连接,则很可能是网络/防火墙问题。再次检查,您的代码或java运行时没有问题。我已尝试进行配置,但最后我决定关闭防火墙以查看是否存在问题。顺便说一句,您不需要用字符串包装字符串。你可以删除
新字符串
你能澄清这个答案吗?虽然原作者可能在近7年后得到了答案,但不清楚你想说什么。