我正在尝试使用 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 放入服务器代码中,它总是能正常工作吗?为什么会这样?