我以前写的一个简单程序中有这么几句,不知对你有帮助没。
String clientSentence;
BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
clientSentence = inFromClient.readLine();

解决方案 »

  1.   

    你读够指定长度就应该退出循环,如果你要读到返回-1,除非对方拆线while(fileNameLen>0){
        if((accept = streamReader.read(fileNames, 0, fileNameLen))==-1)break;
        fileNameLen-=accept;
    }
      

  2.   

    我把接收到的数据打印出来,可以看到需要的数据已接收到.但read似乎还阻塞在那里读.没法退出.
      

  3.   

    用socket读,这种方法
    while(accept = streamReader.read(fileNames, 0, fileNameLen)) != -1)
    的确是除非对方关闭了才会返回-1如果你自己知道将要读的长度,比如 fileNameLen
    那么:
      定义 : int pos=0; rcvLen=0;
      while(rcvLen=streamReader.read(buf,pos,fileNameLen-pos)>0)
      {
        pos+=rcvLen;
      }希望对你有帮助。