偶用Java做的客户端,向服务端(别人用Delphi的)发送信息成功,服务器回复信息,偶是这样接收的:
reader = new BufferedReader(new InputStreamReader(cSocket.getInputStream()));
r = reader.readLine();
如果服务端回复的信息最后面带有一个换行或回车符,那么我可以收到,如果不带,则我就收不到。因为服务端程序是已有的,要别人专门为我改程序是不现实的,那么我怎样才能接收到不带换行或回车符做为结束符的信息呢?
reader = new BufferedReader(new InputStreamReader(cSocket.getInputStream()));
r = reader.readLine();
如果服务端回复的信息最后面带有一个换行或回车符,那么我可以收到,如果不带,则我就收不到。因为服务端程序是已有的,要别人专门为我改程序是不现实的,那么我怎样才能接收到不带换行或回车符做为结束符的信息呢?
它的意思是读一行
那么
没有换行符和回车符就不能算作一行啊
个人意见
char[] szRecvBuf = new char[1024];
in.read(szRecvBuf, 0, szRecvBuf.length);
因为我每次收到的信息长度不会都是1024个字节,可能10个,也可能1000个,那我怎样把它整理为实际的长呢呢?我用for循环可以做到,但这种方法是不是太笨了呢?
byte[] szRecvBuf = new byte[1024];
StringBuffer buff = new StringBuffer();do
{
int k = in.read(szRecvBuf, 0, szRecvBuf.length);
buff.append(new String(szRecvBuf, 0, k));
}while(k != -1)String 接受的字符串 = buff.toString;