java课程设计报告-聊天室(3)

2019-01-07 16:37

课 程 设 计 报 告 书 专 用 纸

int i =0;

while( i < count){ Node node = userLinkList.findUser(i); node.input .close(); node.output.close();

node.socket.close();

i ++; }

stopServer .setEnabled(false); stopItem .setEnabled(false); startServer.setEnabled(true); startItem.setEnabled(true); portSet.setEnabled(true); portItem.setEnabled(true); sysMessage.setEnabled(false);

messageShow.append(\服务端已经关闭\\n\ combobox.removeAllItems();

combobox.addItem(\所有人\

}

catch(Exception e){ //System.out.println(e);

}

}

/**

* 向所有人发送服务器关闭的消息

*/

public void sendStopToAll(){ int count = userLinkList.getCount(); int i = 0; while(i < count){ Node node = userLinkList.findUser(i); if(node == null) { i ++; continue; } try{ node.output.writeObject(\服务关闭\

node.output.flush();

}

catch (Exception e){ //System.out.println(\

}

第 10 页 共 18 页

课 程 设 计 报 告 书 专 用 纸

i++;

}

} /**

* 向所有人发送消息 */

public void sendMsgToAll(String msg){ int count = userLinkList.getCount();//用户总数 int i = 0;

while(i < count){ Node node = userLinkList.findUser(i); if(node == null) {

i ++; continue; } try{ node.output.writeObject(\系统信息\ node.output.flush();

node.output.writeObject(msg);

node.output.flush();

}

catch (Exception e){

//System.out.println(\ }

i++;

}

sysMessage.setText(\

} /**

* 向客户端用户发送消息 */

public void sendSystemMessage(){ String toSomebody = combobox.getSelectedItem().toString(); String message = sysMessage.getText() + \ messageShow.append(message); //向所有人发送消息

if(toSomebody.equalsIgnoreCase(\所有人\ sendMsgToAll(message); }

else{ //向某个用户发送消息

Node node = userLinkList.findUser(toSomebody); try{

node.output.writeObject(\系统信息\

第 11 页 共 18 页

课 程 设 计 报 告 书 专 用 纸

}

node.output.flush();

node.output.writeObject(message); node.output.flush(); }

catch(Exception e){ }

sysMessage.setText(\将发送消息栏的消息清空

//System.out.println(\

} }

public static void main(String[] args) { }

ChatServer app = new ChatServer();

(2)ServerListen.java:该类实现服务端用户上线与下线的侦听。该类对用户上线下线的侦听是通过调用用户链表类(UserLinkList)来实现的,当用户上线与下线情况发生变化时,该类会对主类的界面进行相应的修改。

import java.awt.*;

import java.awt.event.*; import javax.swing.*;

import javax.swing.event.*; import java.io.*; import java.net.*; /*

* 服务端的侦听类 */

public class ServerListen extends Thread {

this.server = server; ServerSocket server;

JComboBox combobox; JTextArea textarea;

JTextField textfield;

UserLinkList userLinkList;//用户链表 Node client;

ServerReceive recvThread;

public boolean isStop; /*

* 聊天服务端的用户上线于下线侦听类 */

public ServerListen(ServerSocket server,JComboBox combobox, JTextArea textarea,JTextField textfield,UserLinkList userLinkList){

第 12 页 共 18 页

课 程 设 计 报 告 书 专 用 纸

}

public void run(){

while(!isStop && !server.isClosed()){ try{ client = new Node();

client.socket = server.accept(); client.output

=

new

this.combobox = combobox; this.textarea = textarea;

this.textfield = textfield;

this.userLinkList = userLinkList;

isStop = false;

ObjectOutputStream(client.socket.getOutputStream());

client.output.flush(); client.input ObjectInputStream(client.socket.getInputStream());

}

}

}

= new

client.username = (String)client.input.readObject();

//显示提示信息

combobox.addItem(client.username); userLinkList.addUser(client);

textarea.append(\用户 \上线\textfield.setText(\在线用户\+ userLinkList.getCount() + \人\\n\

recvThread = new ServerReceive(textarea,textfield, combobox,client,userLinkList);

recvThread.start(); }

catch(Exception e){ }

(3)ServerReceive.java:该类是实现服务器端的消息的收发的类。该类分别定义了向某用户及所有人发送消息的方法,发送的消息会显示在主界面类的界面上。

import javax.swing.*; import java.io.*; import java.net.*;

/*

* 服务器收发消息的类

*/

public class ServerReceive extends Thread {

第 13 页 共 18 页

课 程 设 计 报 告 书 专 用 纸

JTextArea textarea; JTextField textfield;

JComboBox combobox; Node client;

UserLinkList userLinkList;//用户链表 public boolean isStop;

public ServerReceive(JTextArea textarea,JTextField textfield, }

public void run(){

//向所有人发送用户的列表 sendUserList();

while(!isStop && !client.socket.isClosed()){

try{

String type = (String)client.input.readObject(); if(type.equalsIgnoreCase(\聊天信息\

String toSomebody = (String)client.input.readObject(); String status = (String)client.input.readObject();

JComboBox combobox,Node client,UserLinkList userLinkList){ this.textarea = textarea; this.textfield = textfield; this.client = client;

this.userLinkList = userLinkList; this.combobox = combobox;

isStop = false;

String action = (String)client.input.readObject(); String message = (String)client.input.readObject(); String msg = client.username +\

+ \对 \+ toSomebody + \说 : \+ message + \

if(status.equalsIgnoreCase(\悄悄话\ msg = \悄悄话] \}

textarea.append(msg);

if(toSomebody.equalsIgnoreCase(\所有人\ sendToAll(msg);//向所有人发送消息 }

else{

第 14 页 共 18 页


java课程设计报告-聊天室(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:高效课堂 - 语文教学的必由之路

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: