⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kbrss.java

📁 此程序是用JAVA JDK语言编写的
💻 JAVA
字号:
/*   2004年毕业设计
                  聊天室服务器程序 kbrss.java
                                       
                                          设计人:王楠

*/

//加载必要的类
import java.net.*;
import java.io.*;
import java.util.*;
import java.awt.Button;
import java.awt.event.*;
import java.awt.TextField;
//主类
public class kbrss{
static Vector sname=new Vector(10,10);       //类变量,用于存放用户ip地址
static Vector llname=new Vector(10,10);      //类变量,用于存放用户名集和
static jform3 form3=new jform3();            //类变量,创建form3
static boolean biao1=true;                   //运行间隔标识
static int renmax,ren=0;                     //最多人数,当前人数
static String ltsname;                       //聊天室名称
static String mjian="~'`";                   //自定义间隔符
public static void main(String kerberos[])
{
 form3.addWindowListener(new winlis());
 form3.load();                               //运行form3
 form3.button2.addActionListener(new aclis()); 
 form3.button1.addActionListener(new aclis());
 form3.list1.addItemListener(new aclis());
 while(biao1){}
 System.out.println("ok");
  try{
 	 ServerSocket ss=new ServerSocket(1129); //创建ServerSocket
 	 while(true)
 	      {
	       Socket s=ss.accept();	         //等待连接
 	       xian p=new xian(s);               //创建xian类对象
 	       Thread fenlei=new Thread(p);      //创建线程
 	       fenlei.start(); 	      	         //线程开始运行
 	      }
 	}catch(IOException e){}		
}


  


 static class winlis extends WindowAdapter
 {
  public void windowClosing(WindowEvent e)
  {
   form3.dispose();
   System.exit(0);
   }	
 }

//事件响应(内部类)
 static class aclis implements ActionListener,ItemListener
 {
  public void actionPerformed(ActionEvent e)
  {	
   String dx=e.getActionCommand();
   //begin 创建聊天室
   if(dx.equals("创建"))
        {
         try{
             kbrss.ltsname=form3.text3.getText();
             if(!kbrss.ltsname.equals(""))
                {
                 kbrss.renmax=Integer.parseInt(form3.text4.getText());                          
                 kbrss.biao1=false;
                 kbrss.form3.label3.setVisible(true);
                 kbrss.form3.button2.setVisible(false);
                 kbrss.form3.text3.setEditable(false);
                 kbrss.form3.text4.setEditable(false);
                 kbrss.form3.text6.setText("0");
                 }
             }catch(Exception e1){}    
        }
   //end 创建聊天室
   //begin 踢出聊天用户
   if(dx.equals("踢"))
        {
        try{
         String strll=form3.list1.getSelectedItem();
         int index=kbrss.llname.indexOf(strll);
         form3.list1.remove(strll);                 
         kbrss.sname.removeElementAt(index);
         kbrss.llname.removeElement(strll);         
         InetAddress myip=InetAddress.getLocalHost();
         xian.guang("@/"+myip.getHostAddress()+"@"+"---"+strll+"---");
         kbrss.form3.text6.setText(""+kbrss.llname.size());
         kbrss.ren=kbrss.llname.size();
         }catch(Exception excpt){}	
        }
   //end 踢出聊天用户
   if(dx.equals("结束"))
        {
        	
        }     
  }	
  //list1列选项改变事件
  public void itemStateChanged(ItemEvent e)
  {
   String strll=form3.list1.getSelectedItem();
   int index=kbrss.llname.indexOf(strll);
   Object o=kbrss.sname.elementAt(index);
   kbrss.form3.text5.setText(o.toString()); 	
  }//end itemStateChanged   
 }//end acls
}//end kbrss




//聊天信息线程接口
class xian implements Runnable{
Socket sa;
public xian(Socket sing)
{
 sa=sing;	
	}

public void run()
   {
    try{ 
        PrintStream out=new PrintStream(sa.getOutputStream());
        BufferedReader in
  	    =new BufferedReader(new InputStreamReader(sa.getInputStream()));
        
 
        String lsname;
        String ssin=in.readLine();             //接收客户机申请
        
        //聊天请求处理
        if(ssin.equals("liao"))
           {
           	out.println("yes");                //返回服务器标识信息
           	lsname=in.readLine();              //添加客户机昵称
            if(kbrss.llname.size()>=kbrss.renmax)
              {
               out.println("max");	           //返回人满信息
               return;	
              }
            if(!kbrss.llname.contains(lsname))      //查看申请用户名是否重名
           	    {           	     
           	     out.println("ok");                 //接受请求
           	     out.println("("+kbrss.ltsname+")");//发送聊天室名称
           	     int sul=kbrss.llname.size();       //本地用户个数
           	     ssin=Integer.toString(sul);
           	     out.println(ssin);                 //将本要用个数发送客户端
           	     //逐个发送用户名           	     
           	     if(sul>0)
           	        for(int i1=0;i1<sul;i1++)
           	     	    out.println(kbrss.llname.elementAt(i1));
           	     kbrss.sname.add(sa.getInetAddress());//将申请用户ip加入本地
           	     kbrss.llname.add(lsname);            //将申请用户名加入本地
           	     kbrss.form3.list1.add(lsname);       //在form3的list1上显示新加入用户名           	     
           	     kbrss.form3.text6.setText(""+kbrss.llname.size());
           	     kbrss.ren=kbrss.llname.size();
           	     String mess="@"+sa.getLocalAddress()+"@"+"+++"+lsname+"+++";
           	     guang(mess);                         //将新加用户在局域网上广播


           	    }
           	else
           	    {
           	     out.println("more");	               //重名
           	    }
           	}//end if
      
      //用户退出处理
      else if((ssin.substring(0,3)).equals("---"))
             {
              int df=ssin.indexOf("---",3);            //
              String sn=ssin.substring(3,df);	       //取出用户名
       	      int index=kbrss.llname.indexOf(sn);      //{删除向量表和list1中的此用户
       	      kbrss.llname.removeElement(sn);          
       	      kbrss.sname.removeElementAt(index);      
       	      kbrss.form3.list1.remove(sn);            
       	      kbrss.form3.text6.setText(""+kbrss.llname.size());//} 
       	      kbrss.ren=kbrss.llname.size();
       	      ssin="@"+sa.getLocalAddress()+"@"+ssin;
       	      guang(ssin);                            //在局域网中发送广播
        	 }//end else if
       
       //用户聊天信息处理
       else if(ssin.equals("mess"))
        	 {
       	     int len=Integer.parseInt(in.readLine());
             ssin="@"+sa.getLocalAddress()+"@";	      //在信息前加本机地址后广播

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -