我正在尝试使用Java 7 64位服务器vm将几个字节从Windows 7发送到虚拟Ubuntu计算机(oracle虚拟机)。 此代码在Windows上运行
ServerSocket server = null;
try {
server = new ServerSocket(1024);
} catch(Exception e) {
e.printStackTrace();
}
new Thread() {
@Override
public void run() {
while(true) {
try {
Socket so = server.accept();
//Thread.sleep(10);
OutputStream out = so.getOutputStream();
out.write(42);
out.write(43);
out.flush();
out.close();
so.close();
} catch(Exception e) {
e.printStackTrace();
}
}
}
}.start();
在Ubuntu上我运行
public class Client {
public static void main(String[] args) throws Exception {
Socket so = new Socket(args[0], Integer.parseInt(args[1]));
InputStream in = so.getInputStream();
int b = in.read();
while(b >= 0) {
System.out.println(b);
b = in.read();
}
}
}
由于某种原因,有时会丢弃第一个字节。但是,如果我在服务器代码中放置一个Thread.sleep,它总是正常工作?为什么会这样?
答案 0 :(得分:3)
我看不出客户端或服务器程序有什么问题。
这让我们抓住了解释:
如果没有更多的信息/证据,这些解释都不合理。
另一种可能性是某些东西干扰了输出到控制台的输出。尝试使用重定向到文件的输出运行客户端...