第一:你用了BufferedReader,所以有缓冲,不一定会立刻收到
第二:你readLine是不是必须有回车符收到才会返回。

解决方案 »

  1.   

    java那里不是我写的,我不太懂
    以前的server端是用vc写的
    在建立连接后,发给client端的就是"ready\r"我用vb就只用发"ready"就行了吧?
      

  2.   

    那我不用bufferreader,用别的可以么?都只是收一些"ready" "complete"之类的标识而已我刚刚改用"ready\r"试了一下,也不行,这样java里收到的是"ready\r" 不是"ready"
      

  3.   

    我把vb里发送的地方改成了
    tcpServer.SendData SERVER_READY + vbCr 'vbCr就是char(13)=\r然后
    recvData = in.readLine();  <----这句能过去了
    in.read();<----这句还是过不去--------------------------
    我接着改成这样,先发个数据再收,就没事儿了
    out.println(transData);
    out.flush();
    recvData = in.readLine(); 
    in.read();<----就能过去了
      

  4.   

    java client端
    -------------------------------------------------------------
    socket = new Socket(InetAddress.getByName(ipAddr), 9977);
    out = new PrintWriter(socket.getOutputStream());
    in = new BufferedReader(new InputStreamReader(socket.getInputStream())); 
    -------------------------------------------------------------
    socket = new Socket(InetAddress.getByName(ipAddr), 9977);
    out = new PrintWriter(new BufferedWriter(
                            new OutputStreamWriter(
                                     socket.getOutputStream())),true);// 最好刷新一下
    in = new BufferedReader(new InputStreamReader(socket.getInputStream())); 毕竟InputStreamReader 和 OutputStreamWriter 与 Reader 和 Writer的转化以及缓冲的作用是必要的!