【发布时间】:2014-11-10 16:28:57
【问题描述】:
我有一个通过套接字连接的客户端/服务器。
客户端写入要由服务器读取的整数值
我在ObjectOutputStream 中使用readInt() 来写这个值
在服务器端,我在ObjectInputStream 中使用readInt() 来读取这个值。
但是服务器没有读取任何内容,它冻结在readInt()
使用ObjectInputStream阅读有什么问题?
我用的是DataOutputStream,读写成功,但是ObjectInputstream可以读取整数等原始类型,有什么问题?
public class Server {
ServerSocket listener;
private static final int PORT = 9001;
private Socket socket;
private ObjectInputStream obin = null;
private ObjectOutputStream obout = null;
public Server() throws Exception{
listener = new ServerSocket(PORT);
run();
}
public void run() throws Exception{
socket = listener.accept();
obout = new ObjectOutputStream(socket.getOutputStream());
obout.flush();
obin = new ObjectInputStream(socket.getInputStream());
int h=obin.readInt();
System.out.println(h);
obout.writeInt(77);
}
public static void main(String[] args) throws Exception {
Server s = new Server();
}
}
和客户
public class Client {
private ObjectInputStream oin = null;
private ObjectOutputStream oot = null;
private Socket socket = null;
public Client() throws Exception{
String serverAddress = "127.0.0.1";
socket = new Socket(serverAddress, 9001);
oot = new ObjectOutputStream(socket.getOutputStream());
oot.flush();
oin = new ObjectInputStream(socket.getInputStream());
oot.writeInt(66);
int u = oin.readInt();
System.out.println(u);
}
public static void main(String[] args) throws Exception{
Client c= new Client();
}
}
当您运行此代码时,应该会到达服务器 66 在客户端 77, 但实际上我什么也没得到。为什么?
【问题讨论】:
-
为什么在写入之前而不是之后刷新输出流?
标签: java sockets client-server