我是想做个多人聊天室的小程序,于是服务器用ServeSocket和socket类客户端用socket类 互相通信。事实上 我是想打开多个进程,每个进程是一个客户端来模拟多人聊天import java.net.*;
import java.io.*;
public class clicentSock {
public static void main(String[] args) {
for(int i=0;i<5;i++){
new one_clicent().run();
}
}}
客户端单个进程是这么循环的:public void run(){
BufferedReader in=null;
BufferedWriter out=null;
in=new BufferedReader(new InputStreamReader(this.socket.getInputStream()));
out=new BufferedWriter(new OutputStreamWriter(this.socket.getOutputStream()));
String str=null;
while(true){
str=in.readLine();
if(str.equals("end"))
break;
}
}
以上就是主要代码,这么一来 就不停地死循环了
(第二个进程根本不启动)问题就出在我使用了while死循环来使得程序不断检测是否得到了输入流。那么 有没有某种阻塞办法 能让程序检测到有数据流交换 才readline呢
import java.io.*;
public class clicentSock {
public static void main(String[] args) {
for(int i=0;i<5;i++){
new one_clicent().run();
}
}}
客户端单个进程是这么循环的:public void run(){
BufferedReader in=null;
BufferedWriter out=null;
in=new BufferedReader(new InputStreamReader(this.socket.getInputStream()));
out=new BufferedWriter(new OutputStreamWriter(this.socket.getOutputStream()));
String str=null;
while(true){
str=in.readLine();
if(str.equals("end"))
break;
}
}
以上就是主要代码,这么一来 就不停地死循环了
(第二个进程根本不启动)问题就出在我使用了while死循环来使得程序不断检测是否得到了输入流。那么 有没有某种阻塞办法 能让程序检测到有数据流交换 才readline呢
对于多线程,线程的启动是 start,而不是run()
run()是在线程启动后被系统调用的。so
for(int i=0;i<5;i++){
new one_clicent().start();
}
这里假设你的one_clicent类是继承Thread的
顺便问下....我现在是让服务器每连上一个客户端,就产生一个进程 产生一个socket专门和这个客户端通信,比如服务器接收到了客户1的信息,怎么让服务器把信息传递给其他客户端呢...
每个socket都是这么关联bufferedreaer的:in=new BufferedReader(new InputStreamReader(this.socket.getInputStream()));
out=new BufferedWriter(new OutputStreamWriter(this.socket.getOutputStream()));这么一来 服务器的每个进程和一个客户打交道 但是多人聊天的话 ,一个客户传输的信息,应该对每个服务器产生的进程来更新才行吧...
String str;
str=in.readLine();
out.write(str+"\n");
out.flush();
if(str.equals("end")){
break ;
}
}这么一来 服务器把接收到的信息回传给客户端来显示,但是我想实现的是,把接收到的信息回传给所有客户端来显示。