while(started) {
Socket s = ss.accept();
number++;
jb.setText("当前在线人数为:"+number);
System.out.println("a client connected!");//提示客户端已经连接服务器成功了。
t3.setText(t3.getText()+"\n"+"用户:"+number+"上线了");
Client c=new Client(s);
kehu.add(c);
new Thread(c).start();
}
} catch (IOException e) {
System.out.println("Client has shuttdown!");//提示客户端服务器已经关闭了
} finally {
try {
ss.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//多线程响应和处理客户端的请求
public class Client implements Runnable {
Socket s;
DataInputStream dis = null;//初始化变量
DataOutputStream dos = null;//初始化变量
private boolean bConnected = false;//初始化操作变量
String str1=null;//用于发送客户端的字符串变量
//用Client方法来建立一条与客户端通信的通道
public Client(Socket s) {原文请找腾讯32491-14
this.s = s;
try {
dis = new DataInputStream(s.getInputStream());//初始化通信通道
dos=new DataOutputStream(s.getOutputStream());//初始化通信通道
DataOutputStream dos = null;//初始化变量
bConnected = true;//如果建立通道成功,bConnect的值就为true,这是为了在run方法中输出通信通道的内容。
} catch (IOException e) {
e.printStackTrace();
}
}
//服务器端用sendtoclient方法来发送信息给客户端
public void sendtoclient(String str){
try {
dos.writeUTF(str);
} catch (IOException e) {
kehu.remove(this);
System.out.println("对方退出了");
e.printStackTrace();
}
}
int i;
public void run() {
Client ss=null;
try {
//通信通道建立成功就不断输出客户端发来的信息。
while(bConnected) {
str = dis.readUTF();//读取客户端发来的信息
t2.setText(t2.getText()+'\n'+"客户昵称:"+str);//把客户端的信息显示在t2的文本域里面
for( i=0;i<kehu.size();i++){//利用for循环服务器把消息发送给每一个已经连接上服务器的客户端。
ss=kehu.get(i); 论文网
http://www.751com.cn/ ss.sendtoclient(str);//调用sendtoclient方法发送消息给每一个客户端
}
}//处理异常部分。
} catch (EOFException e) {
System.out.println("Client closed!");
kehu.remove(this);
jb.setText("当前在线人数:"+kehu.size());
t3.setText(t3.getText()+"\n"+"当前在线人数为:"+kehu.size());
} catch (IOException e) {
e.printStackTrace(); } finally {
上一页 [1] [2] [3]
java聊天程序Socket+Java聊天程序源代码 第3页下载如图片无法显示或论文不完整,请联系qq752018766