关于client/Server程序出现的问题

xyb1234 2010-03-14 02:38:51
下面的程序运行后为什么会出现死锁?
Client端:

import java.io.*;
import java.net.*;

public class Cclient {
public static void main(String[] args)throws Exception{
Socket s=new Socket("127.0.0.1",5008);
DataOutputStream dos=new DataOutputStream(s.getOutputStream());
DataInputStream dis=new DataInputStream(s.getInputStream());

dos.writeUTF(ms);
dos.flush();
if(dis.readUTF()!=null){
System.out.println("Server:"+dis.readUTF());
}
dos.close();
dis.close();
s.close();
}
}


Server端:

import java.io.*;
import java.net.*;

public class Sserver {
public static void main(String[] args)throws Exception{

ServerSocket ss=new ServerSocket(5008);
Socket s=ss.accept();
DataInputStream dis=new DataInputStream(s.getInputStream());
DataOutputStream dos=new DataOutputStream(s.getOutputStream());
if(dis.readUTF()!=null){
System.out.println("Client:"+dis.readUTF());
}
dos.writeUTF(ms);
dos.flush();
dos.close();
dis.close();
s.close();



}
}
...全文
71 5 打赏 收藏 转发到动态 举报
写回复
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xyb1234 2010-03-16
  • 打赏
  • 举报
回复
真是你说的情况 谢了
xyb1234 2010-03-16
  • 打赏
  • 举报
回复
我试了看看
bibihenmuc 2010-03-14
  • 打赏
  • 举报
回复
个人认为
if(dis.readUTF()!=null){
System.out.println("Server:"+dis.readUTF());
}
这种写法是有问题的,这样就读了两次数据,而实际上只写入了一次数据,而且这程序只开了两个单独的主线程,应该不会出现死锁的现象吧。。。。,应该改成
String data = dis.readUTF();
if(data!=null){
System.out.println("Server:"+dis.data);
}
xyb1234 2010-03-14
  • 打赏
  • 举报
回复
一个Client端
hchjjun 2010-03-14
  • 打赏
  • 举报
回复
开 几 个 客 户 端??
相关推荐

62,568

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告