记得LZ之前问过一个套接字阻塞的问题啊 , 还没解决?
   你的意思是客户端这边始终读不了接收的数据?
LZ再上一点代码看看

解决方案 »

  1.   

    那个解决了~InetAddress serverAddr = InetAddress.getByName("61.164.108.142");//
        Socket socket = new Socket(serverAddr, 8500);
        BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        byte[] sendpacket = new byte[70];
        byte[] Namepacket = new byte[13];
        Namepacket = m_strLoginName.getBytes();
        byte[] Passwordpacket = new byte[33];
        Passwordpacket = getMD5Str(m_strPassWord).getBytes();
        
        byte[] headpacket = BuildMSQHead(1,CSM_LOGININ,5, (short)46);
        System.arraycopy(headpacket, 0, sendpacket, 0, headpacket.length);
        System.arraycopy(Namepacket, 0, sendpacket, 19, Namepacket.length);
        System.arraycopy(Passwordpacket, 0, sendpacket, 32, Passwordpacket.length);
        socket.getOutputStream().write(sendpacket);
        socket.getOutputStream().flush();
        Log.i("strRecv", socket.toString());
        String strRecv = br.readLine();
        if(strRecv == "")
        {
         if(socket != null)
         socket.close();
            m_bIsLoginSuccess = true;
        }  
        BaseClass.this.LoginResult();
      

  2.   

    在服务端打trace啊,确定服务端确定是发过来了,且正确
    我都是这样调试的。
      

  3.   

    你发送过来的东西有回车那些表示一段的符号的东西么?如果没有当然readLine()会卡住啊,一直等到这样的符号,它才能确定一行结束了,要不就会卡住
      

  4.   

    是一定要有回车符号?~除了readLine()还有其他的客户端接收的方法么
      

  5.   

    你看看说明,我记得是 \n , \r 都可以表示,只有有这些符号时,readLine()才能判定一行结束
      

  6.   

    果然症结是在这,我记得讨论这个问题的人很多,
    这个问题的解决我建议你就不要用字符流去读取,用字节流读取,然后再编码转换一下显示出字符串,因为是和C++通讯,所以编码方式不同,会出现乱码,关于乱码的问题网上解决很多,大概就是getBytes(),然后
    new String("你的字符转","GB2312");方法,
    如果你非要用字符流,那你就认为的加分隔符,或者你就用read方法
      

  7.   

    结贴总结:
    用readline来接收数据时,发送的数据里面必须包括换行符
    我用InputStream的read来读字节流
    但是读出来的这个数据要转一下~
    谢谢大家的帮助~
      

  8.   

    重新开启,请问下楼主,你是如何通过socket发送数据到服务端的?需要做哪些特殊的处理,能讲解下吗?最好贴一点代码上来,好理解点!谢谢了