我将请求从客户端套接字发送到服务器套接字,我想使用转义字符(“\ n”)区分请求(作为字节数组发送)。我希望每个新行都有一个请求 例如:
"Request1 "
"Request2"
"Request3"
为了做到这一点,我需要在字节中转换“\ n”以便比较像这样的请求
byte[] request= new byte[1024];
int nextByte;
while((nextByte=in.read(request))!=DELIMITER)
{
String chaine = new String( request,0,nextByte);
System.out.println("Request send from server: " + chaine);
}
问题是,当我尝试在字节中转换“\ n”时,我得到一个数字格式异常
private static final byte DELIMITER = Byte.valueOf("\n");
非常感谢
答案 0 :(得分:7)
试试这个:
private static final byte DELIMITER = (byte) '\n';
双引号用于字符串文字,单引号用于字符,字节#valueOf用于表示你的想法。
如果你想把一个字符串变成字节,你可以这样做:
byte[] theBytes = "\n".getBytes("UTF-8");
答案 1 :(得分:2)
你的问题有很多答案,但接下来的问题是为什么我的循环不起作用?例如如果你只读了10个字节就会停止它,如果你一次发送两个消息,它们将在一次读取时被读取。
你真正想要的是像
BufferedReader br = new BufferedReader(new InputStreamReader(in));
for(String line; (line = br.readline()) != null; ) {
System.out.println("Line read: " + line);
}
答案 2 :(得分:1)
请试试这个
private static final byte DELIMITER = '\n';
'\ n'的类型为char
,对应 unsigned short 。但请记住,Java中的short
始终是签名的。
答案 3 :(得分:1)
这个怎么样:
private static final byte DELIMITER = '\n';
将换行符括在单引号中会产生一个char值,在这种情况下可以将其赋值给一个字节,而不会丢失任何信息。