Java项目(Chat即时聊天系统)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《Java程序设计实训》开发Chat即时聊天系统

一、开放实验项目

Java项目开发—Chat即时聊天系统

二、开放实验时间

201X.XX.XX—201X.XX.XX

三、开放实验地点

专业微机室二(B-4009)

四、开放实验目的

综合利用JDK、Eclipse开发环境,实现中小型项目的设计。

本系统采用C/S架构,基于TCP协议实现数据在服务器和客户端之间进行传输,实现

聊天信息的存储。

通过“Chat即时聊天系统”的设计过程,深刻了解掌握面向对象程序设计语言Java的

核心概念和特性;了解编程技术知识,学会处理异常状况,深入了解Java数据库功能,熟

练掌握图形界面的操作技术,掌握Java应用软件的开发环境和开发过程;灵活选择程序设

计思想,在编写过程中进一步体会Java与其它编程语言的不同之处,分析出Java的优点和

先进之处。同时,使学生能够深入的了解软件项目开发的流程和步骤,掌握每一部分的设计

和实现方法,以及充分利用现有的软件工程设计工具来完成项目的设计。

五、开放实验内容

1.概要设计

采用Socket类建立套接字实现客户端与服务端的通讯。

总体数据流图

服务端数据流图

2.设计原理

(1).利用多线程实现多客户机制。服务器总是在指定的端口上监听是否有客户请求,一旦监听到客户请求,服务器就会启动一个专门的服务线程来响应该客户的请求,而服务器本身在启动完线程之后马上又进入监听状态,等待下一个客户的到来。

(2).服务器在接受客户方的请求后,立即高度一个线程以处理服务器与客户方之间的交互,主程序则返回继续监听端口,等待下一个客户的连接请求。前一个线程在完成相应的交互过程后自动退出,连接也将自动关闭。

(3).在服务器的程序中首先创建单个Server Socket,并调用accept()来等候一个新连接,一旦accept()返回,就取得获得结果的Socket,并用它新建

一个线程,令其只为那个特定的客户提供服务。然后再调用accept(),等候下一个新的连接请求。

3.客户端设计

(1)、数据流图

.

定义Client类控制客户端,用于实现客户端的接收信息与发送信息等操作(2)、客户端代码

import .*;

import java.io.*;

public class Client extends Thread {

Socket skt; // 用于客户端的连接

InetAddress host; // 主机地址

int port; // 端口号

BufferedReader theInputStream;

PrintStream theOutputStream;

String readin;

Face chat;

public Client(String ip, int p, Face chat) {

try {

host = InetAddress.getByName(ip); // 获取IP地址

port = p; // 获取端口号

this.chat = chat;

} catch (IOException e) {

chat.ta.append(e.toString());

}

}

public void run() {

try {

chat.ta.append("准备连线,稍后!");

skt = new Socket(host, port); // 新建Socket对象

chat.ta.append("成功\n"); // 缓冲区末尾添加字符串

theInputStream = new BufferedReader(new InputStreamReader(skt.getInputStream()));

theOutputStream = new PrintStream(skt.getOutputStream());

while (true) {

readin = theInputStream.readLine();

chat.ta.append(readin + "\n");

}

} catch (SocketException e) {

chat.ta.append("未连上!\n");

chat.clientBtn.setEnabled(true);

chat.serverBtn.setEnabled(true);

chat.tfaddress.setEnabled(true);

chat.tfport.setEnabled(true);

try {

skt.close();

} catch (IOException err) {

chat.ta.append(err.toString());

}

} catch (IOException e) {

chat.ta.append(e.toString());

}

}

public void dataout(String data) {

theOutputStream.println(data);

}

}

4、服务端的设计

(1)、数据流图

定义Server类控制服务端,用于实现服务端的接收信息和发送信息等操作(2)、服务端代码

import java.awt.*;

import .*;

import java.io.*;

public class Server extends Thread {

ServerSocket skt; // ServerSocket类监听进入的连接,为每个新的连接产生一个Socket对象

Socket Client[ ]=new Socket[10];

Socket Client1=null;

int i = 0;

TextArea in;

int port,k=0,l=0;

PrintStream theOutputStream;

Face chat;

public Server(int port, Face chat) {

try {

this.port = port;

skt = new ServerSocket(port);

相关文档
最新文档