[英]Thread cannot read and write streams on the same socket at the same time?
Code with lines commented-out works, code with those lines does not.....why? 使用行注释掉的代码工作,代码与那些行不.....为什么? and how do I fix it?
以及如何解决? (note: roughly same code running on the other end)
(注意:在另一端运行大致相同的代码)
public void run() {
try {
ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream);
//ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
while (true) {
//System.out.println( ois.readUTF());
oos.writeUTF("hey");
}
} catch (Exception e) {e.printStackTrace(); }
}
Edit: Made some code to make it clearer what I'm getting at, yes its a little messy. 编辑:制作一些代码,使我更清楚我所得到的,是的它有点凌乱。 (regardless of there being two sockets or not it doesn't seem to work):
(无论是否有两个插座,它似乎不起作用):
Server.java (main): Server.java(主要):
public static void main(String[] args) {
try {
ServerSocket server = new ServerSocket(6666);
ServerSocket server2 = new ServerSocket(6667);
Socket socket = server.accept();
Socket socket1 = server2.accept();
OutputStream output = socket.getOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(output);
ObjectInputStream ois = new ObjectInputStream(socket1.getInputStream());
while (true) {
System.out.println("server reading");
System.out.println( ois.readUTF());
System.out.println("server writing");
oos.writeUTF("hey");
}
} catch (Exception e) {e.printStackTrace(); }
}
Client.java (main) Client.java(主要)
public static void main(String[] args) throws Exception {
Socket socket = new Socket("127.0.0.1", 6666);
Socket socket1 = new Socket("127.0.0.1", 6667);
ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
ObjectOutputStream oos = new ObjectOutputStream(socket1.getOutputStream());
while (true) {
System.out.println("client writing");
oos.writeUTF("yo");
System.out.println("client reading");
System.out.println( ois.readUTF() );
}
}
Server: 服务器:
server reading
Client: 客户:
client writing
client reading
.flush() your output streams. .flush()你的输出流。 In my examples after writing on the output stream I have:
在我的示例中,在输出流上写后,我有:
oos.flush();
I should have always flushed when I wanted to be sure the message was sent. 当我想确定消息已发送时,我应该总是满脸通红。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.