【发布时间】:2020-08-25 22:49:26
【问题描述】:
我正在使用 JDK8 在 android studio 项目上运行的套接字的输出流上发送 2 个 int 值,方法是这样做:
try {
System.out.println("AFTER THREAD START");
System.out.println("WRITE AGE : " + age + " WRITED SEX : " + sex);
output_stream_request.writeInt(age);
output_stream_request.writeInt(sex);
output_stream_request.flush();
System.out.println("WRITE AGE : " + age + " WRITED SEX : " + sex);
} catch (IOException e) {
e.printStackTrace();
}
我在输入端接收它们,在一个使用 JDK8 的 ant 项目上,这样做:
try {
System.out.println("BEFORE_READ");
boolean valid_data = false;
int age = 0;
int sex = 0 ;
age = connector.get_dis_request().readInt();
sex = connector.get_dis_request().readInt();
System.out.println("AGE : " + age + " SEX : " + sex );
我用不同的值执行了很多次,我得到了这些结果:
发送: 年龄 : 50 性别 : 200 // 接收 : 年龄:-1174405120 性别:838860800
发送: 年龄 : 50 性别 : 201 // 接收(同上): 年龄:-1174405120 性别:838860800
发送: 年龄:2 性别 : 200 // 接收 : 年龄:-1174405120 性别:33554432
发送: 年龄:2 性别 : 201 // 接收(同上): 年龄:-1174405120 性别:33554432
请注意,收到的年龄值永远不会改变 并且接收到的性别可能与作为其变化值发送的年龄值有关。 我在打印后用调试器检查了值,它们是相同的,所以它不是打印问题。
【问题讨论】:
-
您没有提到任何一方所涉及的 Java 流的类型。因此,我们无法就您的代码不工作的原因或使用正确的方法提供建议。
标签: java sockets integer inputstream outputstream