服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

自己写的一个支持200人在线的聊天室服务器(简化版)-------主程序文件:chatserver

专业版尚未开始(04-12-17)
三峡大学内的同学可以到http://ftp.ctgu.edu.cn/soft/down.php?act=up&id=2800下载
/*
 * date: 2004-11-29 author:zhangyu6050;
 * email:   dazuibazhangyu@eyou.com
 *           ctgu  (china three groges university)
 * todo: 服务器主程序
 * bugs:
 */
import util.dateutil;
import java.net.*;
import java.awt.*;
import java.awt.event.windowadapter;
import java.awt.event.windowevent;
import java.io.*;

import javax.swing.*;
import java.applet.*;
import java.util.*;
public class chatserver {
    private int port = 1775;      //端口号
    private serversocket servers; //服务器套节字
    public static broadcast broad;//通讯专用类,单态模式设计
    private jtextarea display;
 
    /**
  *初始化
  */
 public chatserver() {
  setupgui();
  runserver();
    }
 public void runserver(){
  try {
   servers=new serversocket(port);
  } catch (ioexception e2) {
   
    showmsg("在指定端口无法监听"+e2.getmessage());
  }
  
  try {
   broad= broadcast.getinstence();//做好准备
            while(true)
            {
             showmsg("等待接入......");
                socket socket = servers.accept();
                //记录登录时间
                string s = dateutil.format(calendar.getinstance(),dateutil.ymdhms)+"/r";
                showmsg("接入时间:"+s);
                //实例化一个代理
                angent angent = new angent(socket);
                //实例化一个服务线程
                serverthread serverthread = new serverthread(angent);
                serverthread.start();
                servers.close();
            }
        }
        catch(ioexception e)
        {
             showmsg(e.getmessage()+"服务器异常在要关闭"); 
   
        }
    }
    public void closeserver(){
     system.out.print("服务器正在关闭!");
     try {
   servers.close();
  } catch (ioexception e) {
   system.err.println(e.getmessage()+"/n服务器无法关闭");
   e.printstacktrace();
  }
    }
 //set up a frame and return it
   private  jframe   setupgui(){
     //setup a frame and set title
     jframe jf=new jframe();
     port=integer.parseint(joptionpane.showinputdialog("input port please:"));
     jf.settitle("server");
     //get the pane of the frame
     container pane=jf.getcontentpane();
     //set up modules
      display=new jtextarea();//显示区
     jlabel sendlable=new jlabel("enter msg");
     jtextfield sysbroadcast=new jtextfield(20);//系统广播发送
     jpanel sendpane=new  jpanel();
     sendpane.add(sendlable);sendpane.add(sysbroadcast);
     pane.add(sendpane, borderlayout.north);
     pane.add("center",new jscrollpane(display));
        jf.setsize(400,300);
        jf.setvisible(true);
        jf.addwindowlistener(new
             windowadapter()
             {
                public void windowclosing(windowevent e)
                {
                   system.exit(0);
                }
             });

     return jf;
    }
   
   void showmsg(string s){
    display.append(s+"/n");
   }
  
   public static void main(string args[]){
         
       new chatserver();
    }
}

扫描关注微信公众号