读取 TCP 消息
Read a TCP Message
我的 TCP 连接有问题(我做了一个 class 扩展线程)。我已经用这段代码实现了读取部分:
byte[] bytes = new byte[1000];
StringBuilder reader = new StringBuilder();
int numRead = 0;
if ((numRead = socket.getInputStream().read(bytes)) >= 0)
{
reader.append(new String(bytes, 0, numRead));
}
这是唯一适用于我的应用程序的代码。昨天我写了这段代码:
BufferedReader in = new BufferedReader(new
BufferedReader(socket.getInputStream()));
StringBuilder str = new StringBuilder();
String msg;
while(msg=in.readLine() != null) //I also tried while (msg != "")
{
str.append(msg);
}
Log.d("String:",str.toString();
但它对我不起作用:它没有打印任何东西。
所以我也试了没有while循环的代码,也没用。
如何更改?我需要听从我的服务器消息的顺序,例如:
- 来自服务器的问候
- 现在我正在发送数据
- 这是位置之前的消息
- 特殊代码中的位置
- 等等
我需要如何更改我的代码?
谢谢
readLine()
only returns null at the end of stream: 也就是说,当对等方关闭连接时。
可能您应该一次读取和写入一行,但这是您的应用程序协议:只有您真正知道。
我的 TCP 连接有问题(我做了一个 class 扩展线程)。我已经用这段代码实现了读取部分:
byte[] bytes = new byte[1000];
StringBuilder reader = new StringBuilder();
int numRead = 0;
if ((numRead = socket.getInputStream().read(bytes)) >= 0)
{
reader.append(new String(bytes, 0, numRead));
}
这是唯一适用于我的应用程序的代码。昨天我写了这段代码:
BufferedReader in = new BufferedReader(new
BufferedReader(socket.getInputStream()));
StringBuilder str = new StringBuilder();
String msg;
while(msg=in.readLine() != null) //I also tried while (msg != "")
{
str.append(msg);
}
Log.d("String:",str.toString();
但它对我不起作用:它没有打印任何东西。 所以我也试了没有while循环的代码,也没用。
如何更改?我需要听从我的服务器消息的顺序,例如:
- 来自服务器的问候
- 现在我正在发送数据
- 这是位置之前的消息
- 特殊代码中的位置
- 等等
我需要如何更改我的代码? 谢谢
readLine()
only returns null at the end of stream: 也就是说,当对等方关闭连接时。
可能您应该一次读取和写入一行,但这是您的应用程序协议:只有您真正知道。