JAVA聊天室

JAVA聊天室
JAVA聊天室

基于JAVA的聊天室设计与实现

一、设计目的:

信息技术的高速发展给人类生产,生活带来了广泛而深远的影响。“上网冲浪”、“数码相机”“PDA”、“彩屏手机”、“蓝牙技术”等新产品,新概念层出不穷,不断冲击着人们的视听。这些高科技成果为人们带来便捷、快乐的同时,也促进了人机交互技术的发展。人机交互是关于设计、评价和实现供人们使用的交互式计算机系统,并围绕相关的主要现象进行研究的科学。它主要研究人与计算机之间的信息交换,涉及计算机科学,心理学,认知科学等诸多学科,是信息技术的一个重要组成部分,并将继续对信息技术的发展产生巨大影响。

聊天室是一项应用广泛,并且实用性强的一个非常典型的人机交互系统。在信息世界里,聊天工具的使用是非常频繁的,如MSN、QQ、校内通,之类的聊天工具许多人都正在使用。此次设计的聊天室系统虽然其功能简单,但是在开发技术和过程中,能够充分学习和使用JAVA的技术,进一步培养学生面向对象程序设计的思想,加深对面向对象程序设计四大特性的理解。

二、需求分析

人们日常生活中越来越多地使用聊天室这项应用来为自己的工作和学习服务。一个操作简单,界面友好、运行稳定的聊天室对于小型局域网的用户可以起到很好的交流作用。所谓聊天室就是一个可以让许多用户同时互相通信的网上园地,个人用户可以通过聊天室将自己融入整个主流社会中。

根据目前使用聊天室的用户需求显示,用户对于聊天室主要有以下几点要求:

(1)、聊天功能:可以实时接收和发送信息,并能支持公聊和私聊的的方式,能够查看聊天记录,聊天过程中能对字体、表情等进行设定等。

(2)、用户功能:可以随时注册和登录及注销,并能选择性加好友和删除好友以及查看对方的开放信息,还能看到对方的登录状态。

(3)、文件传输功能:用户可以共享资源,能发送及接收文件。

(4)、保密功能:用户可以设定自己的保密状态,使某些信息对于其他用户是不可见的。

(5)、系统稳定:客户端与服务端的连接稳定,不出现或者少出现连接不上的情况。

该简易聊天室是为许多喜爱聊天的用户开发设计的,和许多大型的网络聊天室相比该小聊天室功能比较简单,但能实现基本的聊天功能,点对多、点对点聊天和基本的用户功能,登录、注销、查看在线用户等。

三、软件功能描述

(1)、用户设置:

功能描述:用户自定义自己的登录名,成功设置后,服务端能接收到新设置的用户名;

(2)、登录功能:

功能描述:在服务端开启的情况下,用户可以以自己自定义或者默认的登录名和登录地址端口登录到客户端,并能在服务器端显示登录状态;

(3)、公聊:

功能描述:用户在聊天室中可以选择与“所有人”聊天,聊天室中的其他在线用户可以正常接收并正确显示公聊消息。

(4)、私聊:

功能描述:用户可以选择与聊天室的在线用户列表中的其他用户聊天。双方的聊天记录对于聊天室的其他用户是不可见的。

(5)、聊天心情:

功能描述:用户在聊天的过程中可以选择相应的心情来表达自己的情感。

(6)、系统消息:

功能描述:服务端正常运行的过程中,在聊天室的每一个用户都能接收服务器端发送的信息提示信息。

(7)、用户的状态.

功能描述:每一个客户端用户都可以实时看到目前其他在线用户的状态。

(8)、用户注销:

功能描述:用户可以注销自己的账号,并重新登记登录名和地址。

(9)、用户退出:

功能描述:用户可以在正常情况下退出聊天室。

(10)、服务端控制:

功能描述:只有在服务端开启的情况下,用户才能登陆成功和聊天;用户设置的地址端口也必须与服务端的侦听端口一致,否则不能登录。

四:主要模块描述及流程图

1、模块描述

本聊天室分为聊天室服务端和聊天室客户端,服务端与客户端之间通过套接口Socket(TCP)连接。在java中使用套接口相当简单,Java API为处理套接口的通信提供了一个类https://www.360docs.net/doc/2f6421139.html,.Socket.,使得编写网络应用程序相对容易.服务器采用多线程

以满足多用户的请求,通过JDBC与后台数据库连接,并通过创建一个ServerSocket 对象来监听来自客户的连接请求,默认IP地址为:127.0.0.1默认端口为8888。

(1)聊天室服务端模块图:

端口服务:输入要侦听的端口,默认为8888;

启动服务:启动服务器,并开始在设置的端口中侦听,客户端用户可以登录并开始聊天;

停止服务:关闭服务器,侦听结束。客户端用户不能再聊天;

发送系统消息:服务器端给所有人或者个别用户发送消息。

消息显示:可以显示所有用户的聊天记录,和上线、下线信息。

退出服务器:退出程序,并停止服务;

(2)聊天室客户端模块图:

用户设置:用户可以设置自己的用户名进行聊天;

连接设置:用户可以设置自己的服务器的IP地址和端口号,默认的连接地址为:127.0.0.1:8888;

用户登录:只能在聊天室服务端已开启的情况下,用户才能登录,用户登录之后才能开始聊天,登录后不能再修改用户设置和连接设置;

用户注销:退出聊天,可以继续修改用户设置和连接设置;

发送和接收聊天信息:用户可以给所有人或者个别用户发送信息,并能看到其他用户发送给自己或所有人的消息;

退出:关闭所有聊天并退出客户端。

2、流程图

五.主要类UML关系图:

聊天室服务端主要包括7个文件,它们的功能如下:

(1)ChatServer.java:包含名为ChatServer的public类,其主要功能为定义服务器端的界面,添加事件侦听与事件处理。调用ServerListen类来实现服务端用户上线与下线的侦听,调用ServerReceive类来实现服务器端的消息的收发。

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

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

(4)PortConf.java:该类继承自JDialog,是用户对服务器端侦听端口进行修改配置的类。

(5)Node.java:用户链表的节点类,定义了链表中的用户。该类与前面所讲的链表节点Node类的功能相当。

(6)UserLinkList.java:用户链表节点的具体实现类。该类通过构造函数构造用户链表,定义了添加用户,删除用户、返回用户数、根据用户名查找用户、根据索

引查找用户这5个方法。

(7)Help.java:服务端程序的帮助类。

聊天室客户端主要包括5个文件,它们的功能如下:

(1)ChatClient.java:包含名为ChatClient的public类,其主要功能为定义客户端的界面,添加事件侦听与事件处理。该类定义了Connect()与DisConnect()方法实现与服务器的连接与断开连接。当登录到指定的服务器时,调用ClientReceive类实现消息收发,同时该类还定义了SendMessage()方法来向其他用户发送带有表情的消息或者悄悄话。

(2)ClientReceive.java:该类是实现服务器端与客户端消息收发的类。

(3)ConnectConf.java:该类继承自JDialog,是用户对所要连接的服务器IP及侦听端口进行修改配置的类。

(4)UserConf.java:该类继承自JDialog,是用户对连接到服务器所显示的用户名进行修改配置的类。

(5)Help.java:客户端程序的帮助类。

六.主要程序代码清单和注释说明:

******************ChatServer.java****************************************

public void actionPerformed(ActionEvent e) {

Object obj = e.getSource();

if (obj == startServer || obj == startItem) { //启动服务端

startService();

}

else if (obj == stopServer || obj == stopItem) { //停止服务端

int j=JOptionPane.showConfirmDialog(

this,"真的停止服务吗?","停止服务",

JOptionPane.YES_OPTION,JOptionPane.QUESTION_MESSAGE);

if (j == JOptionPane.YES_OPTION){

stopService();

}

}

else if (obj == portSet || obj == portItem) { //端口设置

//调出端口设置的对话框

PortConf portConf = new PortConf(this);

portConf.show();

}

else if (obj == exitButton || obj == exitItem) { //退出程序

int j=JOptionPane.showConfirmDialog(

this,"真的要退出吗?","退出",

JOptionPane.YES_OPTION,JOptionPane.QUESTION_MESSAGE);

if (j == JOptionPane.YES_OPTION){

stopService();

System.exit(0);

}

}

else if (obj == helpItem) { //菜单栏中的帮助

//调出帮助对话框

Help helpDialog = new Help(this);

helpDialog.show();

}

else if (obj == sysMessage || obj == sysMessageButton) { //发送系统消息sendSystemMessage();

}

}

/**

* 启动服务端

*/

public void startService(){

try{

serverSocket = new ServerSocket(port,10);

messageShow.append("服务端已经启动,在"+port+"端口侦听...\n");

startServer.setEnabled(false);

startItem.setEnabled(false);

portSet.setEnabled(false);

portItem.setEnabled(false);

stopServer .setEnabled(true);

stopItem .setEnabled(true);

sysMessage.setEnabled(true);

}

catch (Exception e){

//System.out.println(e);

}

userLinkList = new UserLinkList();

listenThread = new ServerListen(serverSocket,combobox,

messageShow,showStatus,userLinkList);

listenThread.start();

}

/**

* 关闭服务端

*/

public void stopService(){

try{

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

sendStopToAll();

listenThread.isStop = true;

serverSocket.close();

int count = userLinkList.getCount();

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("$$$"+e);

}

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("@@@"+e);

}

i++;

}

sysMessage.setText("");

}

/**

* 向客户端用户发送消息

*/

public void sendSystemMessage(){

String toSomebody = combobox.getSelectedItem().toString();

String message = sysMessage.getText() + "\n";

messageShow.append(message);

//向所有人发送消息

if(toSomebody.equalsIgnoreCase("所有人")){

sendMsgToAll(message);

}

else{

//向某个用户发送消息

Node node = userLinkList.findUser(toSomebody);

try{

node.output.writeObject("系统信息");

node.output.flush();

node.output.writeObject(message);

node.output.flush();

}

catch(Exception e){

//System.out.println("!!!"+e);

}

sysMessage.setText("");//将发送消息栏的消息清空}

}

public static void main(String[] args) {

ChatServer app = new ChatServer();

}

}

************************ServerListen.java: *************************** public class ServerListen extends Thread {

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){

this.server = server;

https://www.360docs.net/doc/2f6421139.html,bobox = combobox;

this.textarea = textarea;

this.textfield = textfield;

https://www.360docs.net/doc/2f6421139.html,erLinkList = userLinkList;

isStop = false;

}

public void run(){

while(!isStop && !server.isClosed()){

try{

client = new Node();

client.socket = server.accept();

client.output = new ObjectOutputStream(client.socket.getOutputStream());

client.output.flush();

client.input = new ObjectInputStream(client.socket.getInputStream());

https://www.360docs.net/doc/2f6421139.html,ername = (String)client.input.readObject();

//显示提示信息

combobox.addItem(https://www.360docs.net/doc/2f6421139.html,ername);

userLinkList.addUser(client);

textarea.append("用户 " + https://www.360docs.net/doc/2f6421139.html,ername + " 上线" + "\n");

textfield.setText("在线用户" + userLinkList.getCount() + "人\n");

recvThread = new ServerReceive(textarea,textfield,

combobox,client,userLinkList);

recvThread.start();

}

catch(Exception e){

}

}

}

}

********************************ServerReceive.java***********************

/*

* 服务器收发消息的类

*/

public class ServerReceive extends Thread {

JTextArea textarea;

JTextField textfield;

JComboBox combobox;

Node client;

UserLinkList userLinkList;//用户链表

public boolean isStop;

public ServerReceive(JTextArea textarea,JTextField textfield,

JComboBox combobox,Node client,UserLinkList userLinkList){

this.textarea = textarea;

this.textfield = textfield;

this.client = client;

https://www.360docs.net/doc/2f6421139.html,erLinkList = userLinkList;

https://www.360docs.net/doc/2f6421139.html,bobox = combobox;

isStop = false;

}

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();

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

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

String msg = https://www.360docs.net/doc/2f6421139.html,ername

+" "+ action

+ "对 "

+ toSomebody

+ " 说 : "

+ message

+ "\n";

if(status.equalsIgnoreCase("悄悄话")){

msg = " [悄悄话] " + msg;

}

textarea.append(msg);

if(toSomebody.equalsIgnoreCase("所有人")){

sendToAll(msg);//向所有人发送消息

}

else{

try{

client.output.writeObject("聊天信息");

client.output.flush();

client.output.writeObject(msg);

client.output.flush();

}

catch (Exception e){

//System.out.println("###"+e);

}

Node node = userLinkList.findUser(toSomebody);

if(node != null){

node.output.writeObject("聊天信息");

node.output.flush();

node.output.writeObject(msg);

node.output.flush();

}

}

}

else if(type.equalsIgnoreCase("用户下线")){

Node node = userLinkList.findUser(https://www.360docs.net/doc/2f6421139.html,ername);

userLinkList.delUser(node);

String msg = "用户 " + https://www.360docs.net/doc/2f6421139.html,ername + " 下线\n";

int count = userLinkList.getCount();

combobox.removeAllItems();

combobox.addItem("所有人");

int i = 0;

while(i < count){

node = userLinkList.findUser(i);

if(node == null) {

i ++;

continue;

}

combobox.addItem(https://www.360docs.net/doc/2f6421139.html,ername);

i++;

}

combobox.setSelectedIndex(0);

textarea.append(msg);

textfield.setText("在线用户" + userLinkList.getCount() + "人\n");

sendToAll(msg);//向所有人发送消息

sendUserList();//重新发送用户列表,刷新

break;

}

}

catch (Exception e){

//System.out.println(e);

}

}

}

/*

* 向所有人发送消息

*/

public void sendToAll(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(e);

}

i++;

}

}

/*

* 向所有人发送用户的列表

*/

public void sendUserList(){

String userlist = "";

int count = userLinkList.getCount();

int i = 0;

while(i < count){

Node node = userLinkList.findUser(i);

if(node == null) {

i ++;

continue;

}

userlist += https://www.360docs.net/doc/2f6421139.html,ername;

userlist += '\n';

i++;

}

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(userlist);

node.output.flush();

}

catch (Exception e){

//System.out.println(e);

}

i++;

}

}

}

*************************PortConf.java*********************************** /**

* 生成端口设置对话框的类

*/

public class PortConf extends JDialog {

JPanel panelPort = new JPanel();

JButton save = new JButton();

JButton cancel = new JButton();

public static JLabel DLGINFO=new JLabel(

" 默认端口号为:8888");

JPanel panelSave = new JPanel();

JLabel message = new JLabel();

public static JTextField portNumber ;

public PortConf(JFrame frame) {

super(frame, true);

try {

jbInit();

}

catch (Exception e) {

e.printStackTrace();

}

//设置运行位置,使对话框居中

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();

this.setLocation( (int) (screenSize.width - 400) / 2 + 50,

(int) (screenSize.height - 600) / 2 + 150);

this.setResizable(false);

}

private void jbInit() throws Exception {

this.setSize(new Dimension(300, 120));

this.setTitle("端口设置");

message.setText("请输入侦听的端口号:");

portNumber = new JTextField(10);

portNumber.setText(""+ChatServer.port);

save.setText("保存");

cancel.setText("取消");

panelPort.setLayout(new FlowLayout());

panelPort.add(message);

panelPort.add(portNumber);

panelSave.add(new Label(" "));

panelSave.add(save);

panelSave.add(cancel);

panelSave.add(new Label(" "));

Container contentPane = getContentPane();

contentPane.setLayout(new BorderLayout());

contentPane.add(panelPort, BorderLayout.NORTH);

contentPane.add(DLGINFO, BorderLayout.CENTER);

contentPane.add(panelSave, BorderLayout.SOUTH);

//保存按钮的事件处理

save.addActionListener(

new ActionListener() {

public void actionPerformed (ActionEvent a) {

int savePort;

try{

savePort=Integer.parseInt(PortConf.portNumber.getText());

if(savePort<1 || savePort>65535){

PortConf.DLGINFO.setText(" 侦听端口必须是0-65535之间的整数!");

PortConf.portNumber.setText("");

return;

}

ChatServer.port = savePort;

dispose();

}

catch(NumberFormatException e){

PortConf.DLGINFO.setText(" 错误的端口号,端口号请填写整数!");

PortConf.portNumber.setText("");

return;

}

}

}

);

//关闭对话框时的操作

this.addWindowListener(

new WindowAdapter(){

public void windowClosing(WindowEvent e){

DLGINFO.setText(" 默认端口号为:8888");

}

}

);

//取消按钮的事件处理

cancel.addActionListener(

new ActionListener(){

public void actionPerformed(ActionEvent e){

DLGINFO.setText(" 默认端口号为:8888");

dispose();

}

});

}

}

**********************Node.java***************************************** /**

* 用户链表的结点类

*/

public class Node {

String username = null;

Socket socket = null;

ObjectOutputStream output = null;

ObjectInputStream input = null;

Node next = null;

}

**************************UserLinkList.java***************************** /**

* 用户链表

*/

public class UserLinkList {

Node root;

Node pointer;

int count;

/**

* 构造用户链表

*/

public UserLinkList(){

root = new Node();

root.next = null;

pointer = null;

count = 0;

}

/**

* 添加用户

*/

public void addUser(Node n){

pointer = root;

while(pointer.next != null){

pointer = pointer.next;

}

pointer.next = n;

n.next = null;

count++;

}

/**

* 删除用户

*/

public void delUser(Node n){

pointer = root;

while(pointer.next != null){

if(pointer.next == n){

pointer.next = n.next;

count --;

break;

}

pointer = pointer.next;

}

}

/**

* 返回用户数

*/

public int getCount(){

return count;

}

/**

* 根据用户名查找用户

*/

public Node findUser(String username){

if(count == 0) return null;

pointer = root;

while(pointer.next != null){

pointer = pointer.next;

if(https://www.360docs.net/doc/2f6421139.html,ername.equalsIgnoreCase(username)){ return pointer;

}

}

return null;

}

/**

* 根据索引查找用户

*/

public Node findUser(int index){

if(count == 0) {

return null;

}

if(index < 0) {

return null;

}

pointer = root;

int i = 0;

while(i < index + 1){

if(pointer.next != null){

pointer = pointer.next;

}

else{

return null;

}

i++;

}

return pointer;

}

}

**************************Help.java************************************* /**

* 生成设置对话框的类

*/

public class Help extends JDialog {

JPanel titlePanel = new JPanel();

JPanel contentPanel = new JPanel();

JPanel closePanel = new JPanel();

JButton close = new JButton();

JLabel title = new JLabel("聊天室服务端帮助");

JTextArea help = new JTextArea();

Color bg = new Color(255,255,255);

public Help(JFrame frame) {

super(frame, true);

try {

jbInit();

}

catch (Exception e) {

e.printStackTrace();

}

//设置运行位置,使对话框居中

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();

this.setLocation( (int) (screenSize.width - 400) / 2,

(int) (screenSize.height - 320) / 2);

this.setResizable(false);

}

private void jbInit() throws Exception {

this.setSize(new Dimension(400, 200));

this.setTitle("帮助");

titlePanel.setBackground(bg);;

contentPanel.setBackground(bg);

基于JAVA实现聊天室

第1章绪论 1.1 论文背景及课题来源 随着网络技术的发展和普及,Internet已经成为人们获取有关信息和相互交流的重要途径之一,越来越多的机构和组织开始利用网络资源传递、发布、收集和管理信息。这对各种类型的网络提供一次很大的挑战与机遇,特别是通过网络进行信息交互的这种活动,更加使网络的经营方式充满了活力和机动性[5]。 基于C/S模型的Java聊天室是应用于网络交流领域的系统,它的主要特点有:(1)通用性:聊天室系统在各种各样的网络中均可以运行,系统具有较高的可移植性和使用性; (2)实用性:系统具有良好的人机界面,便于各类使用者操作,提供了人性化的服务; (3)及时性:通过网络的连接,系统双方的交流可以在短期内进行,相比与传统面对面的交流节省不少时间[15]。 聊天室中聊天内容的及时性和准确性是极其重要的,它主要针对当今社会快节奏生活,人们没有很多时间来等信息。本系统提供的功能便于系统使用双方的信息交流,有效的提高了使用者的使用效率,缩短了使用者的使用时间[6]。 1.2 本课题在国内外的发展状况 随着网络技术的发展和普及,多数网站纷纷利用自己的网络资源建立聊天室,并为客户提供各种各样便捷的服务。中国的一些龙头网站,如sina,有很多聊天室,供国内外的不同的人们进行不同话题的讨论,不仅将会员发展由国内延伸到国际,更是为提高自身的知名度提供了方便[2]。 聊天室的开放性、信息资源的多样性可为网站发展提供优良的广告宣传和商品推广,这是其他网站活动方式所无法比拟的,聊天室趋向方便化、快捷化是各大网站成长的必然经历的阶段[8]。 1.3 应解决的问题及系统开发意义 本系统针对聊天室用户的需要,建立了客户端和服务器端。主要解决的问题包括:(1)服务器端和客户端要实现界面化,并且界面尽量人性化。 (2)服务器端能够正确的启动,并且时刻监视客户端,保持与客户端的连接。 (3)客户端能够快速准确的连接上服务器端,发送的信息经服务器端可以转发给其他客户。 (4)异常处理,对于用户的不正确的操作系统应该有提示。 基于C/S的Java聊天室系统它的开发意义在于为人们之间相互交流提供了一个快捷、方便的应用平台。大型网站可以通过聊天室来提高自身的知名度,增加的访问流量。

基于java socket的聊天室项目文档

北京邮电大学软件学院 2010-2011 学年第 1学期实训项目文档 (每个项目小组一份) 课程名称:全日制研究生实训 项目名称:通信软件实训 项目完成人: 姓名:学号: 姓名:学号: 姓名:学号: 姓名:学号: 姓名:学号: 姓名:学号: 指导教师: 日期:2011年1月21日

基于java socket的聊天室实现 一 . 实训项目目的和要求(说明通过本项目希望达到的目的和要求) 目的:熟练掌握socket编程原理,并用java socket实现聊天室 要求:实现p2p和聊天室功能 二 . 实训项目开发环境(说明本项目需要的环境) 开发工具:Eclipse SDK Version: 3.5.2 和NetBeans 6.9.1 版本 系统:win7 三 . 实训项目内容(说明本项目的内容,如:问题分析、设计方案、算法、设计图等) 1.问题分析 网络编程中两个主要的问题一个是如何准确的定位网络上一台或多台 主机,另一个就是找到主机后如何可靠高效的进行数据传输。在TCP/IP协 议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一 地确定Internet上的一台主机。而TCP层则提供面向应用的可靠(tcp)的 或非可靠(UDP)的数据传输机制,这是网络编程的主要对象,一般不需要 关心IP层是如何处理数据的。目前较为流行的网络编程模型是客户机/服务 器(C/S)结构。即通信双方一方作为服务器等待客户提出请求并予以响应。 客户则在需要服务时向服务器提出申请。服务器一般作为守护进程始终运 行,监听网络端口,一旦有客户请求,就会启动一个服务进程来响应该客户, 同时自己继续监听服务端口,使后来的客户也能及时得到服务。 两类传输协议:TCP;UDP。TCP是Tranfer Control Protocol的简称, 是一种面向连接的保证可靠传输的协议。通过TCP协议传输,得到的是一个 顺序的无差错的数据流。发送方和接收方的成对的两个socket之间必须建 立连接,以便在TCP协议的基础上进行通信,当一个socket(通常都是server socket)等待建立连接时,另一个socket可以要求进行连接,一旦这两个socket连接起来,它们就可以进行双向数据传输,双方都可以进行发送或 接收操作。

Java课程设计聊天室(含代码)

Java程序课程设计任务书 JAVA聊天室的系统的设计与开发 1.主要内容: 用JA V A实现基于C/S模式的聊天室系统。聊天室分为服务器端和客户端两部分,服务器端程序主要负责侦听客户端发来的信息,客户端需要登陆到服务器端才可以实现正常的聊天功能。 2.具体要求(包括技术要求等): 系统的功能要求: A.服务器端主要功能如下: 1.在特定端口上进行侦听,等待客户端连接。 2.用户可以配置服务器端的侦听端口,默认端口为8888。 3.向已经连接到服务器端的用户发送系统消息。 4.统计在线人数。 5.当停止服务时,断开所有的用户连接。 B.客户端的主要功能如下: 1.连接到已经开启聊天服务的服务器端。 2.用户可以配置要连接的服务器端的IP地址和端口号。 3.用户可以配置连接后显示的用户名。 4.当服务器端开启的话,用户可以随时登录和注销。 5.用户可以向所有人或某一个人发送消息。 学习并掌握一下技术:Java JavaBean 等 熟练使用一下开发工具:Eclipse,JCreator 等 实现系统上诉的功能。 3.进度安排: 12月28日~ 12月29日:课程设计选题,查找参考资料 12月30日~ 1月1日:完成系统设计 1月2日~ 1月5日:完成程序代码的编写 1月6日:系统测试与完善 1月7日:完成课程设计报告,准备答辩 4.主要参考文献: [1].张广彬孟红蕊张永宝.Java课程设计(案例精编)[M].清华大学出版社.2007年版

摘要 在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,例如,国外的ICQ、国内腾讯公司开发的OICQ。基于Java网络编程的强大功能,本次毕业设计使用Java编写一个聊天系统。 一般来说,聊天工具大多数由客户端程序和服务器程序外加服务器端用于存放客户数据的数据库组成,本系统采用客户机/服务器架构模式通过Java提供的Soket类来连接客户机和服务器并使客户机和服务器之间相互通信,由于聊天是多点对多点的而Java提供的多线程功能用多线程可完成多点对多点的聊天,数据库管理系统用SQL Server2000完成并通过JDBC-ODBC桥访问数据库。 本系统建立在JAVA平台上,系统的设计使用了面向对象技术和面向对象的设计原则。系统采用C/S结构,客户端与客户端以及客户端与服务器端之间通过Socket传送消息。使用JAVA语言编写,开发工具采用Eclipse。服务器端设计与实现过程中,采用了多线程技术,可以在单个程序当中同时运行多个不同的线程,执行不同的任务。大大增强了程序对服务器资源的利用。 聊天系统完成后将可进行多人对多人的聊天,对好友进行添加、删除,对新用户的注册,发送消息、接受消息等等功能。 关键词:多线程;客户机/服务器;JA V A ;Socket ;Eclipse ;TCP/IP

JAVA聊天室系统的设计与实现

目录 第1章绪论- 1 - 1.1论文背景及课题来源 (1) 1.2本课题在国内外的发展状况 (1) 1.3应解决的问题及系统开发意义 (1) 第2章开发工具及相关技术介绍........................................................................................................... - 2 - 2.1J A V A与S OCKET简介 .. (2) 2.2JB UILDER5介绍 (3) 2.3C/S模型介绍 (3) 2.4用J A V A实现S OCKET模型 (4) 2.5J A V A中的线程模型简介 (5) 2.6SQL SERVER2000简介 (5) 第3章系统需求分析............................................................................................................................... - 6 - 3.1系统任务描述. (6) 3.2系统功能分析 (6) 3.2.1 系统的功能需求....................................................................................................................... - 6 - 3.2.2系统数据流图............................................................................................................................ - 7 - 3.2.3系统数据分析............................................................................................................................ - 8 - 3.3系统可行性分析 (9) 第4章系统设计 .................................................................................................................................... - 11 - 4.1系统总体结构设计 (11) 4.2数据库设计 (12) 4.3系统功能模块详细设计 (13) 第5章编码与实现 ................................................................................................................................ - 16 - 5.1系统主要模块代码 (16) 5.1.1启动、停止服务器.................................................................................................................. - 16 - 5.1.2客户端连接服务器.................................................................................................................. - 17 -

基于JAVA网络聊天室设计

滨江学院 毕业论文(设计)题目基于JA V A网络聊天室设计 学生姓名郭胜航 学号 20072334069 院系滨江学院电子工程系 专业通信工程 指导教师张艳萍 职称教授 二O一一年五月三十日

目录 目录................................................................................. I 第1章绪论. (1) 1.1 研究背景 (1) 1.2 研究目的、内容及要求 (2) 1.2.1 目的 (2) 1.2.2 内容 (2) 1.2.3 要求 (2) 第2章系统开发环境与工具的选择 (3) 2.1 开发环境的选择 (3) 2.2 开发工具的选择 (3) 2.3 开发技术的选择 (4) 第3章需求分析 (5) 3.1 项目概述 (5) 3.1.1 产品描述 (5) 3.1.2 产品功能 (6) 3.2 功能需求 (6) 3.2.1 用户注册 (6) 3.2.2 用户登入 (7) 3.2.3 公聊 (7) 3.2.3 私聊 (8) 3.2.4 发送表情 (8) 3.2.5 聊天记录 (9) 3.2.6 系统消息 (9) 3.2.7 字体属性设置 (9) 3.2.8 用户退出 (10) 第4章概要设计 (11) 4.1 目的 (11) 4.2 运行环境 (11) 4.3 条件与限制 (11) 4.4 体系结构概述 (11) 4.5 功能设计 (12) 4.5.1 用户注册 (12) 4.5.2 用户登入 (12) 4.5.3 公聊 (13) 4.5.4 私聊 (14) 4.5.5 表情 (14) 4.5.6 字体设置 (15) 4.5.7 记录保存 (15) 4.5.8 系统消息 (16)

Java聊天室的设计与实现方案

Java聊天室的设计与实现方案 (WORD版完整可编辑,需更多资料请联系) 摘要 本次毕业设计主要实现了基于Java的聊天系统的功能。此系统在模仿QQ软件的基础增加了通信的安全性。在现在已有的聊天软件中,经常用户的帐号会被盗取,导致用户建立起来的与各个朋友的联系方式被盗取。因此对所有通过网络来传输的数据都需要进行加密来保证其安全性。 通过分析聊天系统的功能以及性能等的需求,运用了 java技术,设计并实现了基于java的聊天系统,并在Eclipse上搭建了项目及运行。 该系统总体划分为两大功能模块:客户端功能模块和服务器端功能模块。客户端又分为用户注册、已注册用户登录、用户的好友显示、用户之间的聊天、添加好友、查看用户好友信息六大服务功能模块。实现了聊天系统所需要的各项功能。此外,使用SQL Server20005数据库来实现数据存储,设计并编写java类来实现对SQL Server2005数据库中的数据的操作。 关键字 Java聊天系统; Eclipse;SQL Server2005数据库

Design and implementation of Java chat room Abstract The main achievement of the graduate design features Java-based chat system. This system is the basis of imitation QQ software to increase the security of communications. In the chat software now has regular user's account will be stolen, causing the user to build up contacts with various friends was stolen. Therefore, all data transmitted over the network needs to be encrypted to ensure security. By analyzing the demand chat system functionality and performance, the use of java technology, design and implementation of java-based chat system, and built on the Eclipse project and run. The overall system is divided into two modules: the client and server-side functional modules function modules. Client is divided into user registration, registered user login, the user's friends show chat between users, add friends, view the user's friends information six service modules. Chat system implements the functions required. In addition, the use of SQL Server20005 database to store data, design and write java class to implement the data SQL Server2005 database operations. Keywords: Java chat system; Eclipse; SQL Server2005 database

java编写的简单局域网聊天室(适合初学者).

import java.awt.BorderLayout; import java.awt.Button; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.Frame; import java.awt.Panel; import java.awt.Point; import java.awt.TextArea; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.File; import java.io.FileWriter; import java.io.IOException; import https://www.360docs.net/doc/2f6421139.html,.DatagramPacket; import https://www.360docs.net/doc/2f6421139.html,.DatagramSocket; import https://www.360docs.net/doc/2f6421139.html,.InetAddress; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class GUI_Chat extends Frame { private static final long serialVersionUID = 1L; private TextArea viewTextArea = new TextArea(20, 1; private TextArea sendTextArea = new TextArea(; private TextField ipTextField = new TextField(20; private Button sendButton = new Button(" 发送" ; private Button clearButton = new Button(" 清屏" ; private Button logButton = new Button(" 记录" ; private Button shakeButton = new Button(" 震动" ; private Panel panel = new Panel(; private DatagramSocket socket ;

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

Java聊天室课程设计 一、需求分析 1.1开发背景 在信息化社会的今天,网络飞速发展,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,类似MSN、QQ,网络聊天时一类的聊天系统的发展日新月异,因此产生了制作一个类似QQ的网络聊天工具的想法,且通过制作该程序还能更好的学习网络软件编程知识。 网络编程的目的就是指直接或间接地通过网络协议与其他计算机进行通讯。网编程中有两个主要的问题,一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输。在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机。而TCP层则提供面向应用的可靠的或非可靠的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的。目前较为流行的网络编程模型是客户机/服务器(C/S)结构。即通信双方一方作为服务器等待客户提出请求并予以响应。客户则在需要服务时向服务器提出申请。服务器一般作为守护进程始终运行,监听网络端口,一旦有客户请求,就会启动一个服务进程来响应该客户,同时自己继续监听服务端口,使后来的客户也得到响应的服务。 1.2设计要求 本课程设计的目标是利用套接字socket()设计一个聊天程序,该程序基于C/S模式,客户机器向服务器发聊天请求,服务器应答并能显示客户机发过来的信息。 1.3设计目的 通过设计一个网络聊天程序,对套接字、数据报通讯、URL、与URLConnectiom的相关知识有详细的了解和充分的认识。能将相关的只是运用到相关的实践中去。 1.4功能实现 聊天室共分为客户端和服务端两部分,服务器程序主要负责侦听客户端发来的消息,客户端需要登录到相应的服务器才可以实现正常的聊天功能。 服务器的主要功能有 1)在特定端口上进行侦听,等待客户连接 2)用户可以配置服务器的真挺端口

JAVA聊天室实验报告

JA V A聊天室实验报告 姓名:马琳越 班级:131114 学号:13111368 日期:2014年4月23日

目录 目录 (2) JA V A程序课程设计任务书 (3) 摘要 (4) 第1章引言 (5) 第2章聊天室系统的设计 (7) 第3章界面设计 (11) 第4章总结 .................................................................................. 错误!未定义书签。

Java聊天室的设计任务书 1.主要内容 用JA V A实现基于C/S模式的聊天室系统。聊天室分为服务器端和客户端部分,服务器端程序主要负责侦听客户端发来的信息,客户端需要登陆到服务器端才可以实现正常的聊天功能。 2.具体要求 A.服务器端主要功能 (1).在特定端口上进行侦听,等待客户端连接。 (2).用户可以配置服务器端的侦听端口,默认端口为8888。 (3).向已经连接到服务器端的用户发送系统消息。 B. 客户端主要功能 (1).连接到已经开启聊天服务的服务器端。 (2).用户可以配置要连接的服务器端的IP地址和端口号。 (3).用户可以配置连接后显示的用户名。 (4).用户可以向所有人或某一个人发送消息。 3.主要参考文献及运用工具 (1)Bruce Eckel 著Thinking in Java ,李刚著疯狂Java讲义 (2)使用技术:Java 使用开发工具:Eclipse

摘要 在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,例如,国外的ICQ、国内腾讯公司开发的OICQ。基于Java网络编程的强大功能,本次大作业要求使用Java编写一个聊天系统。 一般来说,聊天工具大多数由客户端程序和服务器程序外加服务器端用于存放客户数据的数据库组成,但是,由于自己数据库知识的部分遗忘,本程序未连接数据库,采用客户机/服务器架构模式,通过Java提供的Soket类来连接客户机和服务器并使客户机和服务器之间相互通信。 本系统建立在JAVA平台上,系统的设计使用了面向对象技术和面向对象的设计原则。系统采用C/S结构,客户端与客户端以及客户端与服务器端之间通过Socket传送消息。使用JAVA语言编写,开发工具采用Eclipse。服务器端设计与实现过程中,采用了多线程技术,可以在单个程序当中同时运行多个不同的线程,执行不同的任务。大大增强了程序对服务器资源的利用。 聊天系统完成后将可进行多人对多人的聊天,对好友进行添加、删除,对新用户的注册,发送消息、接受消息等等功能。

基于Java的简单网络聊天室编程

基于Java的简单网络聊天室编程 摘要:当前是信息网络得到飞速发展的时代,尤其是计算机和通信技术的发展和结合,深深的影响着我们的生活、学习和工作方式。其中,网络聊天工具成为人们日常交流的一种重要工具,它成本低,通信速度快,方便信息交流和资料的传递。本次开发的网络聊天系统是基于开放的Java应用程序设计的,系统采用客户机/服务器的架构模式,由客户端程序和服务器程序外加服务器端,用于存放客户数据的数据库组成,使用Java提供的Socket类以及Java的多线程功能,在不同的端口上部署各类服务,可以在单个程序中同时运行多个不同进程,而客户端通过Socket发送信息给服务器,从而实现多点对多点的聊天。 关键字:Java,交互性,Socket类,多线程 Zhao cheng-yu Abstract:The rapid development of the information networks, especially the development and integration of computer and communication technologies, has deeply affected our lives, learning and work. Among them, the Internet chat tool becomes an important tool for daily communication, because it is low cost, fast communication and facilitat einformation exchange and data transmission. The development of the Internet chat system is designed based on open Java application. It can be dynamic, real-time information transfer and efficient interaction so that it can deal more effectively with customer requests, and is easy to maintain and update. The system will use the client / server architecture model, which includes the client program and server programs plus server-side database used to store customer data. By using the socket class provided by java and java multi-threading capability,we can deploy various services on a different port and a number of different processes can be run simultaneously in a single program. Clients send information to the server through the socket in order to achieve multi-point-to-multipoint chat. Key words: Java, interactivity, the Socket class, multi-threaded

JAVA聊天室(参考实现)

第一章基于JAVA的聊天室设计与实现 一、设计目的: 信息技术的高速发展给人类生产,生活带来了广泛而深远的影响。“上网冲浪”“数码相机”“PDA”、“彩屏手机”、“蓝牙技术”等新产品,新概念层出不穷,不断冲击着人们的视听。这些高科技成果为人们带来便捷、快乐的同时,也促进了人机交互技术的发展。人机交互是关于设计、评价和实现供人们使用的交互式计算机系统,并围绕相关的主要现象进行研究的科学。它主要研究人与计算机之间的信息交换,涉及计算机科学,心理学,认知科学等诸多学科,是信息技术的一个重要组成部分,并将继续对信息技术的发展产生巨大影响。 聊天室是一项应用广泛,并且实用性强的一个非常典型的人机交互系统。在信息世界里,聊天工具的使用是非常频繁的,如MSN、QQ、校内通,之类的聊天工具许多人都正在使用。此次设计的聊天室系统虽然其功能简单,但是在开发技术和过程中,能够充分学习和使用JAVA的技术,进一步培养学生面向对象程序设计的思想,加深对面向对象程序设计四大特性的理解。

第二章功能介绍 1.需求分析 人们日常生活中越来越多地使用聊天室这项应用来为自己的工作和学习服务。一个操作简单,界面友好、运行稳定的聊天室对于小型局域网的用户可以起到很好的交流作用。所谓聊天室就是一个可以让许多用户同时互相通信的网上园地,个人用户可以通过聊天室将自己融入整个主流社会中。 根据目前使用聊天室的用户需求显示,用户对于聊天室主要有以下几点要求: (1). 与聊天室成员一起聊天,可以与聊天室成员私聊 (3). 可以改变聊天内容风格,用户注册(含头像)、登录 (4). 服务器,服务器过滤非法内容。 (5). 服务器发送通知,保存服务器日志,保存用户聊天信息。。 该简易聊天室是为许多喜爱聊天的用户开发设计的,和许多大型的网络聊天室相比该小聊天室功能比较简单,但能实现基本的聊天功能,点对多、点对点聊天和基本的用户功能,登录、查看在线用户等。 2、软件功能描述 (1)、用户设置:用户自定义自己的登录名,成功设置后,服务端能接收到新设置的用户名; (2)、登录功能:在服务端开启的情况下,用户可以以自己自定义或者默认的登录名和登录地址端口登录到客户端,并能在服务器端显示登录状态; (3)、公聊:用户可以与“所有人”聊天,在线用户可正常接收并正确显示公聊消 (4)、私聊:用在线用户和其他用户聊天。记录对于聊天室的其他用户是不可见的。 (5)、聊天心情:用户在聊天的过程中可以选择相应的心情来表达自己的情感。 (6)、系统消息:服务端运行,为每一个用户都能接收服务器端发送的信息提示信息。 (7)、用户的状态.每一个客户端用户都可以实时看到目前其他在线用户的状态。 (8)、用户剔除:用户可以被系统剔除,并重新登记登录名和地址。 (9)、用户退出:用户可以在正常情况下退出聊天室。 (10)、服务端控制:服务端开启的情况下,用户才能登陆成功和聊天;用户设置的地址端口也必须与服务端的侦听端口一致,否则不能登录。

JAVA聊天室

基于JAVA的聊天室设计与实现 一、设计目的: 信息技术的高速发展给人类生产,生活带来了广泛而深远的影响。“上网冲浪”、“数码相机”“PDA”、“彩屏手机”、“蓝牙技术”等新产品,新概念层出不穷,不断冲击着人们的视听。这些高科技成果为人们带来便捷、快乐的同时,也促进了人机交互技术的发展。人机交互是关于设计、评价和实现供人们使用的交互式计算机系统,并围绕相关的主要现象进行研究的科学。它主要研究人与计算机之间的信息交换,涉及计算机科学,心理学,认知科学等诸多学科,是信息技术的一个重要组成部分,并将继续对信息技术的发展产生巨大影响。 聊天室是一项应用广泛,并且实用性强的一个非常典型的人机交互系统。在信息世界里,聊天工具的使用是非常频繁的,如MSN、QQ、校内通,之类的聊天工具许多人都正在使用。此次设计的聊天室系统虽然其功能简单,但是在开发技术和过程中,能够充分学习和使用JAVA的技术,进一步培养学生面向对象程序设计的思想,加深对面向对象程序设计四大特性的理解。 二、需求分析 人们日常生活中越来越多地使用聊天室这项应用来为自己的工作和学习服务。一个操作简单,界面友好、运行稳定的聊天室对于小型局域网的用户可以起到很好的交流作用。所谓聊天室就是一个可以让许多用户同时互相通信的网上园地,个人用户可以通过聊天室将自己融入整个主流社会中。 根据目前使用聊天室的用户需求显示,用户对于聊天室主要有以下几点要求: (1)、聊天功能:可以实时接收和发送信息,并能支持公聊和私聊的的方式,能够查看聊天记录,聊天过程中能对字体、表情等进行设定等。 (2)、用户功能:可以随时注册和登录及注销,并能选择性加好友和删除好友以及查看对方的开放信息,还能看到对方的登录状态。 (3)、文件传输功能:用户可以共享资源,能发送及接收文件。 (4)、保密功能:用户可以设定自己的保密状态,使某些信息对于其他用户是不可见的。 (5)、系统稳定:客户端与服务端的连接稳定,不出现或者少出现连接不上的情况。 该简易聊天室是为许多喜爱聊天的用户开发设计的,和许多大型的网络聊天室相比该小聊天室功能比较简单,但能实现基本的聊天功能,点对多、点对点聊天和基本的用户功能,登录、注销、查看在线用户等。

基于java开发的网络聊天室--------[Login.java]

import javax.swing.*; import java.awt.*; import java.awt.event.*; import https://www.360docs.net/doc/2f6421139.html,.*; import java.io.*; import https://www.360docs.net/doc/2f6421139.html,.*; /** * * Title: HappyChat聊天系统登录程序 * * * Description: 根据指定的服务器地址、用户名和密码登录聊天服务器 * * * Copyright: Copyright (c) 2006 * * * Filename: Login.java * * * @author 公子明 * @version 1.0 **/ public class Login extends JFrame implements ActionListener { private static final long serialVersionUID = -8965773902056088264L;//通过这种方式来解决不同的版本之间的串行话问题。 private JPanel pnlLogin;//声明面板 private JButton btnLogin, btnRegister, btnExit;//声明按钮 private JLabel lblServer, lblUserName, lblPassword, lblLogo;//声明标签private JTextField txtUserName, txtServer;//声明文本域 private JPasswordField pwdPassword;//声明密码输入文本域 private String strServerIp;//字符串变量 // 用于将窗口定位 private Dimension scrnsize;

Java聊天室系统程序设计实验报告材料

Java聊天室系统程序设计 实验报告 院(系):信息与通信工程系 专业:计算机应用技术 班级: 学号: 姓名: 指导老师: 2013/6/8

目录 第一部分:系统设计总述 (2) 1.设计目的: (2) 2.设计总体要求: (2) 3.实现目的: (2) 第二部分:系统需求分析 (3) 1.系统任务描述 (3) 2.系统功能分析 (3) 3.系统可行性分析 (3) 第三部分:系统设计 (4) 1.系统总体结构设计 (4) 2.系统主体的处理流程 (5) 3.系统流程逻辑 (5) 第四部分:代码分析 (6) 1.服务器端部分代码 (6) 2.客户端部分代码 (6) 第五部分:系统的具体实现 (6) 界面设计 (6) 第六部分:小结 (10) 第七部分:参考文献 (10)

1.设计目的: 1.在开发技术和过程中,能够充分学习和使用JAVA的技术,进一步培养学生面向对象程序 设计的思想,加深对面向对象程序设计特性的理解。 2.学会Java程序开发的环境搭建与配置,并在实际运用中学习和掌握Java程序开发的全 过程。 3.进一步熟悉掌握Java程序设计语言的基础内容,如用户图形界面设计、文件和网络输入 输出流编程、Java数据库编程等。 4.通过亲自动手写程序,一方面拓展知识面,一方面锻炼调试能力。 2.设计总体要求: 1.问题的描述与程序将要实现的具体功能。 2.程序功能实现的具体设计思路或框架,并检查流程设计。 3.代码实现。 4.程序测试。 5.设计小结(包括) 3.实现目的: 本软件是一个实用聊天程序。项目要实现以下目标: 1)建立服务器端和客户端并进行连接; 2)利用线程设计结构合理,运行效率较高的聊天室; 3)实现写消息,发消息,回复,查看聊天记录等功能;

Java Socket实现多人聊天室

Java Socket实现多人聊天室---swing做UI 标签:socket聊天javaexception服务器string 2011-08-31 15:06 20679人阅读评论(25) 收藏举报 分类: java(21) 版权声明:本文为博主原创文章,未经博主允许不得转载。 今天翻硬盘的workspace发现一个Java Socket实现多人聊天室的源码,不记得是什么时候的事情了,貌似不是我写的。但写得还不错, 至少算个有模有样的聊天室工具。我简单的修改了一下,拿出来跟大家分享一下,仅供参考。。。 界面是用swing写的,还不懒,简约大方。有图有真相:

正如上图所示,这个程序分为服务器端和客户端,说白了就是两个main class,用eclipse 直接运行之。。。。。 聊天室的设计思想是:在局域网下,利用socket进行连接通信,当服务器端启动的时候,利用Thread线程不停的等待客户端的链接;当有客户端开启连 接的时候,服务器端通过IO流反馈“上线用户”信息给客户端,客户端也使用线程不停的接收服务器的信息,从而实现多人在线聊天功能。 程序中有三个类,分别Server.java(服务器端)、Client(客户端)、User.java(javabean)。代码如下: Server.java(服务器端): [html]view plaincopy 1.import java.awt.BorderLayout; 2.import java.awt.Color; 3.import java.awt.GridLayout; 4.import java.awt.Toolkit; 5.import java.awt.event.ActionEvent;

用Java编写的UDP协议简单聊天室

用Java编写的UDP协议简单聊天室: package com; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import https://www.360docs.net/doc/2f6421139.html,.*; public class Chat { Frame frame = new Frame("个人聊天室"); TextField tfip = new TextField(15);// 用户输入IP地址的文本框List list = new List();// 用于显示接收消息的列表框DatagramSocket ds; public Chat() { try { ds = new DatagramSocket(50000); } catch (SocketException e) { e.printStackTrace(); } new Thread(new Runnable() { public void run() { try { byte buf[] = new byte[1024]; DatagramPacket dp = new DatagramPacket(buf, 1024); while (true) { ds.receive(dp); System.out.println("接收OK"); list.add(new String(buf, 0, dp.getLength()) + ":from" + dp.getAddress().getHostAddress(), 0);

JAVA课程设计聊天室系统

Java课程设计指导书(学生版初稿) 第二章聊天室系统 目标 2.1 背景介绍 2.1.1 业务背景 2.1.2 技术背景 2.2 需求分析 2.2.1功能需求分析 2.2.2 业务对象分析 2.2.3 验收测试要求 2.3 系统设计 2.3.1 总体设计 2.3.2 详细设计 2.4 系统实现 2.5 小结 2.6 展望

第二章聊天室系统 学习目标: 1、理解基于网络的C/S模式的软件系统结构,掌握网络编程的基本概念。 2、了解Java 的多线程机制,掌握Java多线程技术的应用。 3、熟练掌握基于TCP协议的Socket编程。 4、了解Socket编程的协议约定,掌握简单应用协议的开发。 5、进一步巩固发展团队协作能力。 学习寄语:想必大家都用过QQ,其主要功能就是聊天,是不是很想知道它是如何实现的?本项目就是帮你实现一个简单的聊天系统,当然跟商业项目没法比,但从中你却可以了解这些系统是如何实现的,学到开发类似系统的基础知识和基本技能(基本并不意味不实用)。本章的内容有一定难度(多线程、基于TCP的应用协议编程),所以系统的开发采用了“增量迭代”的开发方式,由简易到繁难,希望你能顺利前行。我们的信念依然是:“不抛弃,不放弃”。你的改变和收获依然是老师真诚的期待,期待你更踏实、更自信。Come on!

2.1 背景介绍 2.1.1 业务背景 随着网络社会的不断发展,具有相同兴趣的网民需要互相远程交流,既要能省钱又要能即时交互,电话太贵、email又嫌慢,所以开发一个类似QQ 的及时通讯系统就变得非常有意义了。“Happy Chat”聊天系统应运而生,它较之QQ 的唯一好处是自主开发,用的放心,更适合在局域网内使用。它提供的功能远不如QQ丰富,但应具有如下功能:(1)与聊天室成员一起聊天;(2)可以与聊天室成员私聊;(3)用户注册、登录;(4)服务器监控聊天内容;(5)服务器发送通知;(6)服务器踢人;(7)保存服务器日志。(8)保存用户聊天信息。 2.1.2 技术背景 本系统要求使用java技术开发,使用文件保存数据,集成开发环境使用eclipse。开发者应有java程序设计语言、SWING基本GUI组件、多线程、文件使用、socket编程、使用eclipse的基本知识和技能。系统采用两层C/S体系结构,C端负责通过GUI与客户交互,实现注册、登陆、收发信息、退出等功能;S端是聊天系统的应用服务器,主要有处理用户注册、登录、用户收发信息、用户退出等功能。C端和S端是通过网络交互的,其基本原理如图1所示: 图1 C/S通讯基本原理图

相关文档
最新文档