java实现聊天室功能(包含全部代码,有界⾯)服务器端代码:
手工制作风筝import java.*;
import java.io.*;
import java.util.*;
import urrent.*;
import javax.swing.*;
public class Server
{
private static final int PORT=6666;
G_Menu gm=new G_Menu();
private ServerSocket rver;
彭于晏演的电影
public ArrayList<PrintWriter> list;
public static String ur;
public static ArrayList<Ur> list1=new ArrayList<Ur>();//定义⽤户集合
public Ur uu;
public Server(String ur)
{
this.ur=ur;
}
public void getServer()
{
list =new ArrayList<PrintWriter>();
try{
rver=new ServerSocket(PORT);
System.out.println("服务器启动,开始监听......");
while(true)
{
Socket client=rver.accept();//接收客户端线程
PrintWriter writer = new OutputStream());
list.add(writer);
Thread t = new Thread(new Chat(client));
t.start();
}
}catch(Exception ex){
ex.printStackTrace();
}
}
public static void main(String[] args)
{
new Server(ur).getServer();
}
class Chat implements Runnable
{
Socket socket;
private BufferedReader br;
private String msg;
private String mssg="";
public Chat(Socket socket)
{
try{
this.socket=socket;
}catch(Exception ex){
ex.printStackTrace();
}
}
public void run()
{
try{
br=new BufferedReader(new InputStream())); while((adLine())!=null)
{
if(msg.equals("1008611"))//匹配字符串显⽰好友列表
{
adLine();
String[] st=msg.split(":");//将⽤户信息跟消息分隔开
uu=new Ur(st[0],st[1],socket);//将⽤户信息添加到Ur对象中
list1.add(uu);//将对象添加到⽤户集合
Iterator<Ur> it=Server.list1.iterator();//遍历⽤户集合
while(it.hasNext())
{
Ur ();
Name()+"("+u.getSex()+"):";
mssg+=msg;//将所有的⽤户信息连接成⼀个字符串
}
ndMessage("1008611");//显⽰好友列表匹配标识
ndMessage(mssg);//群发消息
}
el if(msg.equals("10010"))//显⽰说话消息
{
adLine();
女贞子的作用与功效System.out.println(msg);
ndMessage("10010");//显⽰说话信息匹配标识
ndMessage(msg);
}
el if(msg.equals("10086"))//显⽰进⼊聊天室
{
adLine();
System.out.println(msg);
ndMessage("10086");//进⼊聊天室匹配标识
ndMessage(msg);
}
el if(msg.equals("841163574"))//私聊
{
adLine();
String[] rt=msg.split("1072416535");//把传进来的⽤户信息跟说话内容分开
System.out.println(rt[1]);//在服务器端显⽰说话内容
String[] tg=rt[0].split(":");//因为是私聊,传过来两个⽤户的⽤户信息,这句作⽤是再把两个⽤户信息分开Iterator<Ur> iu=Server.list1.iterator();//遍历⽤户集合
while(iu.hasNext())
{
Ur =iu.next();
if(tg[1].equals(.getName()+"("+.getSex()+")"))//如果传进来的⽤户信息跟集合中的⽤户信息吻合{
try{
文化的名言
PrintWriter pwriter=new PrintWriter(.getSock().getOutputStream());//建⽴⽤户⾃⼰的流pwriter.println("841163574");//匹配标识
pwriter.println(rt[1]);//向单独⽤户发送消息
pwriter.flush();分享的好处
System.out.println(rt[1]);
}catch(Exception ex){
ex.printStackTrace();
}
}
el if(tg[0].equals(.getName()))//如果传进来的⽤户信息跟集合中的⽤户信息吻合
{
try{
PrintWriter pwr=new PrintWriter(.getSock().getOutputStream());//建⽴⽤户⾃⼰的流
pwr.println("841163574");//匹配标识
pwr.println(rt[1]);//向单独⽤户发送消息
pwr.flush();
System.out.println(rt[1]);
}catch(Exception ex){
ex.printStackTrace();
王德恒}
}
}
}
el if(msg.equals("456987"))//下线
{
adLine();
System.out.println(msg);//在服务端显⽰信息
ndMessage("456987");//匹配字符串
ndMessage(msg);//匹配完毕后群发消息
String[] si=msg.split(":");//将传过来的⽤户名跟信息分隔开
Iterator<Ur> at=Server.list1.iterator();//遍历⽤户集合
while(at.hasNext())
{
Ur ();
一点红萝卜Name().equals(si[0]))//如果传过来的⽤户名跟⽤户集合⾥的⽤户吻合{
}
}
break;
天空是什么}
el if(msg.equals("123654"))//刷新
{
String mssge="";
Iterator<Ur> iter=Server.list1.iterator();//遍历⽤户集合
while(iter.hasNext())
{
Ur ();
Name()+"("+Sex()+"):";
mssge+=msg;//将所有的⽤户信息连接成⼀个字符串
}
ndMessage("123654");//发送刷新匹配标识
ndMessage(mssge);//群发消息
}
}
}catch(IOException ex){
ex.printStackTrace();
}
}
}
public void ndMessage(String message)//群发消息⽅法
{
try{
for(PrintWriter pw:list)//输出流集合