首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

ServerSocket群发有关问题

2012-12-25 
ServerSocket群发问题while(true){BufferedReader reader new BufferedReader(new InputStreamReader(Sy

ServerSocket群发问题

while(true)
{
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

for(int i = 0;i<vlist.size();i++){

Socket s = (Socket)vlist.get(i);
OutputStream os = s.getOutputStream();
String line = "服务器说:"+reader.readLine()+"--------"+s;
os.write(line.getBytes());

}
}
这个程序我实现了多个客户端向服务器发送信息的功能,但是在向由服务器向多个客户端实现群发时出了问题,不能实现群发,只能向单个客户端发送信息,也就是说,由服务器发出的信息,只有一个客户端收到,接收到信息的客户端是随机的,不是固定,我要服务器发出信息,其他所有客户端都同时接到信息,该怎么做呢?这些是群发的代码,我个人觉得这出了问题,向高手求教,求解
[最优解释]
看起像是没有调os.flush()?
[其他解释]
既然你解决了,那我就凑个人气好了。
[其他解释]
引用:
看起像是没有调os.flush()?
调用了也不行
[其他解释]
我把整个输出的线程帖出来,希望知道的帮个忙,谢谢了

public class ServerOutputThread extends Thread
{
private Socket socket;

Vector vlist = new Vector();

public ServerOutputThread(Socket socket,Vector v)
{
this.socket = socket;
this.vlist = v;
}

@Override
public void run()
{
try
{


while(true)
{
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

for(int i = 0;i<vlist.size();i++){

Socket s = (Socket)vlist.get(i);
OutputStream os = s.getOutputStream();
String line = "服务器说:"+reader.readLine()+"--------"+s;
os.write(line.getBytes());
os.flush();
}
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
}

[其他解释]
成功,问题就出在这
String line = "服务器说:"+reader.readLine()+"--------"+s; 
线程阻塞了
[其他解释]
引用:
既然你解决了,那我就凑个人气好了。
谢谢

热点排行