java网络编程的线程被阻塞了大家帮我看看

来源:百度知道 编辑:UC知道 时间:2024/06/18 11:53:16
由于代码太多了 我就粘出了核心代码
client端代码:
soc=new Socket("172.168.42.249",8001);
ips=soc.getInputStream();
ops=soc.getOutputStream();
coips=new ObjectInputStream(ips);
coops=new ObjectOutputStream(ops);
Userinfo backuser=(Userinfo)coips.readObject();
server端代码:
ServerSocket ss=new ServerSocket(8001);
Socket soc=ss.accept();
InputStream ips=soc.getInputStream();
OutputStream ops=soc.getOutputStream();
ObjectInputStream soips=new ObjectInputStream(ips);
ObjectOutputStream soops=new ObjectOutputStream(ops);
Userinfo user=new Userinfo();
user.setUserId(12345);
user.setPassword("sdflkj");
soops.writeObject(user);
我调试时发现程序在客户端的coips=new ObjectInputStream(ips);这一句被阻塞了,但如果我把客户端的coops=new ObjectOutputStream(ops);这句代码删了,再在服务端把ObjectInputStream soips=new ObjectInputStream(ips);这句删了就能通过 ,但这样只有单向通信~
各位高手们 怎么改呀
谢谢你们了 ,你们说的那是一个原因,还有一个原因是ObjectInputStream s

服务这一边OutputStream 写完数据后需要flash()一下否则会等待接着写

另外在客户端的OutputStream 里面写点东西看看服务这边是否也可以收到,当然也要记得flash一下

soops.writeObject(user);
上面这句后面加上一句 soops.flush();

u

flush()