java socket 服务端接收不到来自客户端的消息

时间:2021-02-12 19:55:43
服务端
public void run() {  
        try {  
            System.out.println(socket.toString());  
            socket.setKeepAlive(true);  
            socket.setSoTimeout(5 * 1000);  
            InputStream in= socket.getInputStream();    
            
            PrintWriter out=new PrintWriter(socket.getOutputStream());    

            //BufferedReader wt = new BufferedReader(new InputStreamReader(System.in));   
            while (true) {  
              String strXML = "";  
                 byte[] temp = new byte[1024];  
                 int  length = 0;  
                 while((length = in.read(temp)) != -1){  
                     strXML += new String(temp,0,length);  
                 }  
                 if("1".equals(strXML)){     
                  out.print((char)1);
                     System.out.println("接受心跳包并回复");  
                     break;   
                 }  
                 if("".equals(strXML))  
                     continue;  
                   
                 System.out.println("客户端发来:"+strXML.toString());   
                   
//                 MethodHandler mh = new MethodHandler(ReadXML.readXML(strXML.toString()));  
//                 String resultXML = mh.getResultXML();  
//                 System.out.println("返回:"+resultXML.toString());  
//                   
//                   
//                 if(!"".equals(resultXML)){  
//                     out.print(resultXML);  
                     out.flush();   
                    out.close();  
//                 }  

                     
             }     
             socket.close();     
             System.out.println("socket stop.....");  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  

客户端

public static void main(String[] args) {  
        try {  
            Socket socket = new Socket("localhost", 8877);  
            socket.setKeepAlive(true);  
            InputStream in= socket.getInputStream();   
            PrintWriter out=new PrintWriter(socket.getOutputStream());    
            while(true && null != socket){
              String strXML = "";  
                    byte[] temp = new byte[1024];  
                    int  length = 0;  
                    while((length = in.read(temp)) != -1){  
                        strXML += new String(temp,0,length);  
                    }  
             out.print(1);
                Thread.sleep(10 * 1000);  
                
            }  
            out.flush();
            out.close();
        }catch(IOException e){
         e.printStackTrace();
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  

6 个解决方案

#1


自己顶一下子

#2


检查服务器到底启动没有,可以查端口的监听情况。

检查服务器和客户端的端口是不是统一

#3


楼上说的肯定没问题哈,您看是不是我代码哪里写错了

#4


代码是不是不全,没看到服务端 serversocket 的accept 侦听,服务端不侦听,怎么接受客户短发送过来的数据。

#5


对对,没侦听

#6


引用 4 楼 u011137239 的回复:
代码是不是不全,没看到服务端 serversocket 的accept 侦听,服务端不侦听,怎么接受客户短发送过来的数据。

侦听之后还是没接收到啊,是不是客户端你的发送有问题啊

#1


自己顶一下子

#2


检查服务器到底启动没有,可以查端口的监听情况。

检查服务器和客户端的端口是不是统一

#3


楼上说的肯定没问题哈,您看是不是我代码哪里写错了

#4


代码是不是不全,没看到服务端 serversocket 的accept 侦听,服务端不侦听,怎么接受客户短发送过来的数据。

#5


对对,没侦听

#6


引用 4 楼 u011137239 的回复:
代码是不是不全,没看到服务端 serversocket 的accept 侦听,服务端不侦听,怎么接受客户短发送过来的数据。

侦听之后还是没接收到啊,是不是客户端你的发送有问题啊