当前位置: 代码迷 >> Java相关 >> socket编程某些服务器对某些客户端没有响应的问题!!
  详细解决方案

socket编程某些服务器对某些客户端没有响应的问题!!

热度:30   发布时间:2007-09-25 14:46:01.0
socket编程某些服务器对某些客户端没有响应的问题!!

我是这么用的t=serversocket(inetaddress,2);
while(true){
t=y.accept();
out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(t.getOutputStream())),true);
in=new BufferedReader(new InputStreamReader(t.getInputStream()));
System.out.println(in.readLine());
}
}catch(IOException x){x.printStackTrace();}
客户端:
try{
Socket x=new Socket(InetAddress.getLocalHost(),4113);
out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(x.getOutputStream())),true);
in=new BufferedReader(new InputStreamReader(x.getInputStream()));
}catch(IOException e){e.printStackTrace();}
System.out.println("x");
try{
out.println(System.in.read());

启动服务端之后,同时启动3个客户端,顺序为A,B,C
我在C客户端输入a,然后在B客户端输入B,然后在A客户端输入C。这下问题出来了!!服务端只输出一个99然后退出了??
想知道这是怎么回事?A,B客户端的数据怎么没有输出??请教了!!

[此贴子已经被作者于2007-9-25 14:53:38编辑过]

搜索更多相关的解决方案: socket  服务器  客户端  new  Socket  

----------------解决方案--------------------------------------------------------
System.in.read()应该是这个问题。。。
它只读一个字符的。。
当没有字符时它一直阻塞,一旦读了一个字符程序就往下运行了。。
----------------解决方案--------------------------------------------------------

这个我知道,但是明明已经有两个客户端输入了数据,哪数据哪去了??想知道数据的去向,请教了??


----------------解决方案--------------------------------------------------------
你的数据被遗弃在缓存中了,因为

t=y.accept();
out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(t.getOutputStream())),true);
in=new BufferedReader(new InputStreamReader(t.getInputStream()));
System.out.println(in.readLine());

这一段导致了Server在处理第一个数据的时候(准确来说应该是第一个到达的数据)产生阻塞。
而这个Server又极端无聊,处理完第一个Client就退出了...所以后面两个数据全部被阻塞在缓存中,随着程序的关闭而被操作系统遗弃

----------------解决方案--------------------------------------------------------
阻塞在哪个端的缓存中??
是客户端还是服务端!!!

----------------解决方案--------------------------------------------------------

我用BufferedReader和PrintWrite也老是出这种情况。。。
比较郁闷就改用DataInputStream和DataOutputStream的writeUTF,readUTF。。
没什么问题。


----------------解决方案--------------------------------------------------------
  相关解决方案