java - 套接字接收 null (Android)

标签 java android sockets null

我有一个与服务器通信的 android 应用程序(用 java 编写)。 在这两个部分之间我建立了一个 Socket 连接并想要发送数据。 我遇到的问题是,有时对于某些用户来说,到达服务器的信息是空的。

这有效(适用于所有手机,所有用户):
服务器:

int a = Integer.parseInt(in.readLine());
int b = Integer.parseInt(in.readLine());
int c = Integer.parseInt(in.readLine());
int d = Integer.parseInt(in.readLine());
String checksum = in.readLine();
String model = in.readLine();
String device = in.readLine();
String name = in.readLine();

客户:

out.println(a);
out.println(b);
out.println(c);
out.println(d);
out.println(hash);
out.println(Build.MODEL);
out.println(Build.DEVICE);
String name = fixName();
out.print(name);
out.flush();

这不起作用(对于某些用户):
服务器:

int a = Integer.parseInt(in.readLine());
String checksum = in.readLine();
String model = in.readLine();
String device = in.readLine();
String name = in.readLine();
String msg = in.readLine();
int version = -1;
String test = "hej";
try{
    test = in.readLine();
    version = Integer.parseInt(test);
}catch(Exception e){
    e.printStackTrace();
}

客户:

out.println(a);
out.println(hash);
out.println(Build.MODEL);
out.println(Build.DEVICE);
String name = fixName();
if(name == null) name = "John Doe";
out.println(name);
String msg = fixMsg();
if(msg == null) name = "nada";
out.println(msg);
out.println(curversion);
out.flush();

有时,在第二种情况下,名称、消息和版本(字符串测试)在服务器端为空。捕获被触发,因为测试为空。
curversion,a 是整数,其余是字符串。

有什么想法吗?

最佳答案

此处编码不佳。每次调用 readLine() 时,您必须立即测试结果是否为 null,如果为 true,则停止读取并关闭流。

这种特殊情况是 Scanner 的工作。

关于java - 套接字接收 null (Android),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2840632/

相关文章:

使用 C 语言编写的带有套接字的聊天服务器

java - foreach 循环是否真的被重写为带有迭代器的 for 循环?

java - 我应该如何检索 Maven 项目的最新版本以进行合约测试?

android - 错误 : Could not find a version that satisfies the requirement Cython (from versions: none) ERROR: No matching distribution found for Cython

c - 在两个套接字之间共享信息

java.net.SocketTimeoutException : Read timed out under Tomcat

java - 犀牛 JavaScript : How to convert Object to a Javascript primitive?

java - 一周的值(value)是多少?

android - 使用选项卡实现登录屏幕

java - Android 假设 "main/UI thread"ID 始终为 1 是否安全?