JAVA聊天室源码Word格式.docx

上传人:b****5 文档编号:20296535 上传时间:2023-01-21 格式:DOCX 页数:18 大小:20.12KB
下载 相关 举报
JAVA聊天室源码Word格式.docx_第1页
第1页 / 共18页
JAVA聊天室源码Word格式.docx_第2页
第2页 / 共18页
JAVA聊天室源码Word格式.docx_第3页
第3页 / 共18页
JAVA聊天室源码Word格式.docx_第4页
第4页 / 共18页
JAVA聊天室源码Word格式.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

JAVA聊天室源码Word格式.docx

《JAVA聊天室源码Word格式.docx》由会员分享,可在线阅读,更多相关《JAVA聊天室源码Word格式.docx(18页珍藏版)》请在冰豆网上搜索。

JAVA聊天室源码Word格式.docx

Panelp6=newPanel();

Panelp7=newPanel();

Panelp8=newPanel();

Panelp9=newPanel();

Panelp10=newPanel();

//设置两个主要的文本框

Labellb1=newLabel("

服务器界面"

lb1.setBackground(newColor(250,120,150));

Labellb2=newLabel("

port"

BorderLayoutborder1=newBorderLayout();

p1.setLayout(border1);

p1.add(BorderLayout.CENTER,area);

BorderLayoutborder2=newBorderLayout();

p5.setLayout(border2);

p5.add(BorderLayout.NORTH,p3);

p5.add(BorderLayout.CENTER,msgA);

BorderLayoutborder3=newBorderLayout();

p7.setLayout(border3);

p7.add(BorderLayout.CENTER,p1);

p7.add(BorderLayout.SOUTH,p5);

p7.setBackground(newColor(250,150,200));

JButtonstartButton=newJButton("

启动服务"

JButtonsendButton=newJButton("

发送"

JButtonflushButton=newJButton("

刷新列表"

FlowLayoutfl=newFlowLayout(FlowLayout.LEFT);

p8.setLayout(fl);

p8.add(lb2);

p8.add(portT);

p8.add(startButton);

p8.add(sendButton);

p8.add(flushButton);

p8.setBackground(newColor(250,120,150));

BorderLayoutborder4=newBorderLayout();

p9.setLayout(border4);

p9.add(BorderLayout.CENTER,p7);

p9.add(BorderLayout.SOUTH,p8);

p10.setLayout(newBorderLayout());

Labellb3=newLabel("

在线用户"

lb3.setBackground(newColor(250,120,150));

p10.add(lb3,BorderLayout.NORTH);

p10.add(list,BorderLayout.CENTER);

area.setEditable(false);

BorderLayoutborder=newBorderLayout();

this.addWindowListener(newWindowAdapter(){

publicvoidwindowClosing(WindowEventarg0){

System.exit(0);

}

});

this.setLayout(border);

this.add(BorderLayout.NORTH,lb1);

this.add(BorderLayout.CENTER,p9);

this.add(BorderLayout.EAST,p10);

this.setTitle("

聊天服务器"

this.setBounds(100,100,600,550);

this.setVisible(true);

//"

按钮监听器

startButton.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

Threadt=newStart();

t.start();

//启动按钮监听器----end

//发送按钮监听器

sendButton.addActionListener(newActionListener(){

Stringmsg=msgA.getText();

if(msg!

=null&

&

msg!

="

"

){//如果消息不为空

Calendarca=newGregorianCalendar();

inthh=ca.get(Calendar.HOUR_OF_DAY);

intmm=ca.get(Calendar.MINUTE);

intss=ca.get(Calendar.SECOND);

Stringtime=newString(hh+"

:

+mm+"

+ss+"

"

broadcast(time+"

[系统消息]:

+msg);

//那么广播这条系统消息

area.append(time+"

+msg+"

\n"

msgA.setText("

//end

//刷新按钮监听器

flushButton.addActionListener(newActionListener(){

if(list!

=null){

list.removeAll();

//清空在线用户列表,以便刷新

Set<

Map.Entry<

>

mySet=container.entrySet();

for(Iterator<

it=mySet.iterator();

it.hasNext();

){//刷新列表

Map.Entry<

me=it.next();

StringaClientName=me.getKey();

SocketaClient=me.getValue();

StringaClientAddress=aClient.getInetAddress().getHostAddress();

list.add(aClientName+"

----"

+aClientAddress);

}//endoffor

}//endofactionPerformed

msgA.addKeyListener(newKeyAdapter(){//键盘监听器---按下Enter发送信息

publicvoidkeyPressed(KeyEvente){

intvalue=e.getKeyCode();

if(value==KeyEvent.VK_ENTER){

}

}//endofinit()

classStartextendsThread//启动服务器的线程

{

publicvoidrun(){

try{

if(server!

!

server.isClosed()){

area.append("

警告!

服务器已在启动中!

else{

server=newServerSocket(Integer.parseInt(portT.getText()));

//启动服务器

area.append((newDate()).toString()+'

\n'

+"

[恭喜!

^_^]"

+"

服务器启动成功!

+"

\n\n"

while(true){

client=server.accept();

ThreadsgS=newSgService(client);

//为每位登录的客户创建一个线程

sgS.start();

//启动客户线程

catch(Exceptione){

System.out.println("

cuowu1"

e.printStackTrace();

}//endofrun()

}//endofStart

//处理单个客户的线程

classSgServiceextendsThread//SgService---begin

privateSocketclient=null;

//客户套接字

privateBufferedReaderbr=null;

//输入流

privatePrintStreamps=null;

privateintcounter=0;

//记录是第几次接受用户的信息

privateintmark=0;

//记录用户说不文明用语的次数

privateStringname=null;

SgService(Socketclient){//构造方法

this.client=client;

publicvoidrun(){//run()----begin

br=newBufferedReader(newInputStreamReader(client.getInputStream()));

ps=newPrintStream(client.getOutputStream());

Stringmsg=null;

while((msg=br.readLine())!

=null){//无限循环,意味着可以和客户进行无限次交互

if(counter==0){

name=msg;

container.put(name,client);

list.add(name+"

+client.getInetAddress().getHostAddress());

Stringtime=hh+"

;

broadcast(time+name+"

上线了!

area.append(time+name+"

counter++;

else{

if(msg.equals("

你是个笨蛋"

)){

mark=mark+1;

if(mark<

3){

singleCom(time+"

警告!

请注意文明用语!

client);

//在服务器端显示这个用户说不文明语言的次数

+name+"

第"

+mark+"

次使用了不文明用语,特此警告!

else{//如果客户第三次说不文明的话,系统就把他踢出聊天室

if(mark==3){

singleCom(time+"

由于您多次使用了不文明用语,经警告无效,现已被踢出聊天室!

//告诉他本人

removeClient(name,client);

//从系统列表中删除这个人的信息

//并向所有人广播这一消息

+name+"

由于多次使用了不文明用语,经警告无效,现已被踢出聊天室!

area.append(time+name+"

说:

+msg+"

//将客户发送的消息显示在服务器的窗口中

broadcast(time+name+"

+msg+"

//同时向每个在线客户广播这则消息

}//endofwhile

catch(Exceptionex){

下线了!

list.remove(name+"

container.remove(name);

}//run()---end

}//SgService-----end

voidremoveClient(Stringname,Socketclient){//踢人

}

//广播

voidbroadcast(Stringmsg){//broadcast()-----begin

Iterator<

Stringmessage=msg;

while(it.hasNext()){//如果列表中还有客户

SockettempClient=me.getValue();

singleCom(message,tempClient);

//就把消息向发给这个客户

}//broadcast()-----end

//向单个客户发送消息

privatevoidsingleCom(Stringmsg,SocketaClient){//singleCommunication------begin

PrintStreampw=newPrintStream(aClient.getOutputStream());

pw.println(msg);

}catch(Exceptionex){

ex.printStackTrace();

}//singleCommunication----end

publicstaticvoidmain(String[]args){

newServer().init();

//启动服务器窗口

服务器:

}//endofServer

//登录界面:

classLoginextendsJFrameimplementsActionListener

TextFieldtxtPort;

TextFieldtxtIP;

TextFieldtxtName;

JButtonbtnLogin;

JButtonbtnCancel;

SockettoServer;

BufferedReaderin;

PrintStreamout;

publicLogin(){

Panelp1=newPanel();

Panelp2=newPanel();

Panelp3=newPanel();

Panelp4=newPanel();

Panelp5=newPanel();

Labell1=newLabel("

Labell2=newLabel("

IP"

Labell3=newLabel("

昵称"

txtPort=newTextField("

15);

txtIP=newTextField("

192.168.55.1"

txtName=newTextField("

小敏"

p2.add(l1);

p2.add(txtPort);

p3.add(l2);

p3.add(txtIP);

p4.add(l3);

p4.add(txtName);

GridLayoutg=newGridLayout(3,1);

//三行一列的网格布局管理器

p1.setLayout(g);

//设置布局管理器

p1.add(p2);

//将组件添加到面板中

p1.add(p3);

p1.add(p4);

p1.setBackground(newColor(100,250,100));

//更改面板颜色

btnLogin=newJButton("

登陆"

btnCancel=newJButton("

取消"

btnLogin.addActionListener(this);

//添加监听器

btnCancel.addActionListener(this);

BorderLayoutborder1=newBorderLayout();

//边界布局管理器

this.setLayout(border1);

p5.add(btnLogin);

p5.add(btnCan

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 文化宗教

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1