文档库 最新最全的文档下载
当前位置:文档库 › 使用Socket、Java开发一个CS架构的多人聊天室

使用Socket、Java开发一个CS架构的多人聊天室

使用Socket、Java开发一个CS架构的多人聊天室
使用Socket、Java开发一个CS架构的多人聊天室

今天我们来制作Flash 聊天室,学习使用Socket 类,用Java 作后台,开发一个C / S 架构的多人聊天程序。首先,设计用户界面。

一、界面设计

界面的元件全部使用Flash CS3 自带的组件:

首先,放入TextInput 组件(实例名input_txt),作为用户输入;

再放入Button 组件(实例名submit_btn),用于提交输入的信息;

最后放入TextArea 组件(实例名output_txt),显示聊天信息。

二、组件参数初始化

由于客户端代码不是很多,我们这次就写在动作帧上:

// ************ 组件参数初始化************

submit_https://www.wendangku.net/doc/c51329148.html,bel = "发送消息";

output_txt.editable = false;

// 设置各组件中字体的大小

input_txt.setStyle("textFormat", new TextFormat(null, 15));

output_txt.setStyle("textFormat", new TextFormat(null, 15));

submit_btn.setStyle("textFormat", new TextFormat(null, 15, null, true));

// 当按下回车或点击submit_btn 按钮后调用事件处理函数

submit_btn.addEventListener(MouseEvent.CLICK, sendMessage); addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);

// 事件处理函数

function onKeyDown(evt:KeyboardEvent):void {

if (evt.keyCode == Keyboard.ENTER) {

sendMessage(null);

}

}

function sendMessage(evt:Event):void {

// 测试:将input_txt 的内容输出到output_txt 中

output_txt.appendText(input_txt.text + "\n");

// 清空input_txt,并设置焦点到input_txt

input_txt.text = "";

stage.focus = input_txt;

}

三、编写客户端Socket

1. 首先,Socket 连接非常简单:

var socket:Socket = new Socket();

socket.connect("127.0.0.1", 8888);

其中connect() 方法中的两个参数分别为是主机名和端口号(端口号尽量用1024 以上)。好了,这样就连接上了。接下来是读写的问题。

2. 向服务器端写入字符串:我们在sendMessage() 方法中进行写入操作,注意写出的字串必需以回车(\n)结束:

function sendMessage(evt:Event):void {

var bytes:ByteArray = new ByteArray();

bytes.writeUTFBytes(input_txt.text + "\n");

socket.writeBytes(bytes);

socket.flush();

// 清空input_txt,并设置焦点到input_txt

input_txt.text = "";

stage.focus = input_txt;

}

3. 读取服务器端写回的字符串:最后将服务器发回的字符串输出到output_txt 文本域中:

// 当客户端socket 收到数据后会调用readMessage() 函数

socket.addEventListener(ProgressEvent.SOCKET_DATA, readMessage);

function readMessage(evt:ProgressEvent):void {

output_txt.appendText(socket.readUTF() + "\n");

}

四、Flash 客户端全部脚本

// ************ 组件参数初始化************

submit_https://www.wendangku.net/doc/c51329148.html,bel = "发送消息";

output_txt.editable = false;

input_txt.setStyle("textFormat", new TextFormat(null, 15));

output_txt.setStyle("textFormat", new TextFormat(null, 15));

submit_btn.setStyle("textFormat", new TextFormat(null, 15, null, true));

submit_btn.addEventListener(MouseEvent.CLICK, sendMessage); addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);

function onKeyDown(evt:KeyboardEvent):void {

if (evt.keyCode == Keyboard.ENTER) {

sendMessage(null);

}

}

function sendMessage(evt:Event):void {

var bytes:ByteArray = new ByteArray();

bytes.writeUTFBytes(input_txt.text + "\n");

socket.writeBytes(bytes);

socket.flush();

input_txt.text = "";

stage.focus = input_txt;

}

// ************ 客户端Socket ************

var socket:Socket = new Socket();

socket.connect("127.0.0.1", 8888);

socket.addEventListener(ProgressEvent.SOCKET_DATA, readMessage); function readMessage(evt:P rogressEvent):void {

output_txt.appendText(socket.readUTF() + "\n");

}

五、编写Java 服务器端Socket

最后,我们需要编写Java 后台服务器端的代码。

首先,创建一个ServerSocket 作为Socket 服务器。当有客户端连接后通过accept() 方法即可得到客户端的Socket:

ServerSocket socketServer = new ServerSocket(8888);

System.out.println("服务器已启动,等待客户端连接");

// accept() 方法是阻塞式的,当有客户端连接成功后才继续执行

Socket socket = socketServer.accept();

System.out.println("客户端连接成功");

然后得到与客户端的输入流和输出流(输入流是客户端连接到服务器的管道,输出流则是服务器到客户端的管道):

// 获得输入流和输出流,输入流为BufferedReader 类型,输出流为DataOutputStream 类型

BufferedReader reader =

new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF-8"));

DataOutputStream writer = new DataOutputStream(socket.getOutputStream());

拿到输入输出流以后,就可以通过输入流(InputStream)读取Flash 客户端发来的字

符串,通过输出流(OutputStream)向Flash 客户端写字符串:

while (true) {

// readLine() 方法也是阻塞式的,当客户端有消息发来就读取,否则就一直等待String msg = reader.readLine();

// 当客户端发送的字符串为null 时,说明客户端已经关闭,此时退出循环

if (msg == null) {

System.out.println("客户端已离开");

break;

}

// 将读入的信息加工后再写回客户端

writer.writeUTF("写回客户端的" + msg);

}

以上是ServerSocket 与AS 3 Socket 通信的基本原理。在实际应用中,会有多个客户端连接这个ServerSocket,因此要创建一个多线程的Socket 服务器。

下面简述一下多线程Socket 服务器原理:当socketServer.accept() 之后就需要实例化一个线程对象,在该对象中持有socketServer.accept() 返回的Socket 对象,然后让线程跑起来执行读写操作。如果再来一个客户端就再跑一个线程,同样执行读写操作。同时,用一个List 容器来管理这些对象。

最终服务器端的代码如下:

import java.io.BufferedReader;

import java.io.DataOutputStream;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.UnsupportedEncodingException;

import https://www.wendangku.net/doc/c51329148.html,.ServerSocket;

import https://www.wendangku.net/doc/c51329148.html,.Socket;

import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;

public class FlashScoket {

private List clientList = new ArrayList();

public static void main(String[] args) {

new FlashScoket().runSocket();

}

private void runSocket() {

try {

ServerSocket socketServer = new ServerSocket(8888);

System.out.println("服务器已启动,等待客户端连接");

while (true) {

// accept() 方法是阻塞式的,当有客户端连接成功后才继续执行

Socket socket = socketServer.accept();

System.out.println("客户端连接成功");

// 实例化一个Client 对象,并启动该线程

Client client = new Client(socket);

clientList.add(client);

client.start();

}

} catch (IOException e) {

e.printStackTrace();

}

}

class Client extends Thread {

private Socket socket;

private BufferedReader reader;

private DataOutputStream writer;

private Client(Socket socket) {

this.socket = socket;

try {

// 获得输入流和输出流,输入流为BufferedReader 类型,输出流为DataOutputStream 类型

reader = new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF-8"));

writer = new DataOutputStream(socket.getOutputStream());

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

@Override

public void run() {

try {

while (true) {

// readLine() 方法也是阻塞式的,当客户端有消息发来就读取,否则就一直等待

String msg = reader.readLine();

// 当客户端发送的字符串为null 时,说明客户端已经关闭,此时退出循环

if (msg == null) {

clientList.remove(this);

System.out.println("客户端已离开");

break;

}

// 将读入的内容写给每个客户端

for (Iterator it = clientList.iterator(); it.hasNext();) { Client client = it.next();

client.getWriter().writeUTF(msg);

}

}

} catch (IOException e) {

e.printStackTrace();

} finally {

// 关闭socket 及相关资源

try {

if (reader != null) {

reader.close();

}

} catch (IOException e) {

e.printStackTrace();

} finally {

try {

if (writer != null) {

writer.close();

}

} catch (IOException e) {

e.printStackTrace();

} finally {

try {

if (socket != null) {

socket.close();

}

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

}

public DataOutputStream getWriter() {

return writer;

}

}

}

六、补充技术

1. 如何测试?

* 首先要编译FlashScoket ——javac FlashScoket

* 然后启动FlashScoket —— java FlashScoket

* 最后将Flash 发布为exe 文件格式,同时开启多个即可。

2. 自动跟踪到最后一行:当收到新的消息时自动滚动到最后一行,在readMessage() 方法中加入:

output_txt.verticalScrollBar.scrollPosition = output_txt.verticalScrollBar.maxScrollPosition;

3. 当出现输入/输出错误并导致发送或加载操作失败时提示用户,加入对IO_ERROR 的侦听:

socket.addEventListener(IOErrorEvent.IO_ERROR, socketIOError);

function socketIOError(evt:IOErrorEvent):void {

output_txt.appendText("服务器端尚未开启,请稍后再试\n");

}

4. 在sendMessage() 中加入对空字符串的验证,如果为空则return:

if (input_txt.text == "") {

return;

}

5. 在消息前面显示用户名:大家可以制作一个登录页面,输入用户名,假设已将输入的用户名存放在userName 变量中,在写入时加进去:

var userName:String = "FL 车在臣";

在sendMessage() 中相应改为:

bytes.writeUTFBytes(userName + " : " + input_txt.text + "\n");

6. 使用output_txt .htmlText 输出文字,那么相应的写入格式可以调整为:

bytes.writeUTFBytes("" + userName + " : " + input_txt.text + "\n");

基于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.wendangku.net/doc/c51329148.html,.DatagramPacket; import https://www.wendangku.net/doc/c51329148.html,.DatagramSocket; import https://www.wendangku.net/doc/c51329148.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聊天室实验报告

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聊天室课程设计 一、需求分析 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聊天室(参考实现)

第一章基于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聊天室系统程序设计实验报告材料

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.wendangku.net/doc/c51329148.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通讯基本原理图

聊天室的设计与实现

Java 聊天室的设计与实现 学院:计算机学院 专业: 班级: 学号: 姓名:秦向红 指导老师: 2014年11月

1. 设计背景 (1) 2. 设计环境 (1) 3. 设计目的 (1) 4. Socket介绍 (1) 5. Socket的通信机制图: (3) 6.程序的设计 (4) 6.1服务器的设计 (4) 6.2客户端的设计 (7) 7. 测试及运行结果 (10) 7.1服务器的测试 (10) 7.2客户端的测试 (10) 8.设计总结 (13) 9. 参考文献 (14) 10.附代码 (14) 10.1服务器代码 (14) 10.2客户端的设计 (17)

Java 聊天室的设计与实现 1.设计背景 在互联网如此发达的今天,即时通信工具已经成为我们如常生活中必不可少的一部分。人们对网络的依赖越来越多,越来越离不开网络,而由此产生的聊天工具也越来越多,类似有QQ、MSN、、微信等,网络聊天使网络聊天系统发展的日新月异,由此产生制作了一个简单的聊天功能的网络聊天程序,由此此设计我还可以更好的学习网络软件的编程知识。 Java语言是当今流行的网络编程语言,它具有面向对象,与平台无关,安全,多线程等特点。使用java语言不仅可以实现大型企业级的分布式应用系统,还能够为小型的的,嵌入式设备进行应用程序的开发。面向对象的开发是当今世界最流行的开发方法,它不仅具有更贴近自然地语义,而且有利于软件的维护和继承。 此次设计的题目为聊天室,可以巩固所学的java语言基础知识,增进java语言的编辑基本功,拓宽常用类库的应用,使我们通过教学环节与手段,把所学的课程及相关知识加以融会贯通,全面理解网络编程的含义。 2.设计环境 操作系统:Window 8 CPU:1.80GHz 内存:4.00GB 硬盘空间:80G 开发工具:JDK1.5、Eclipse 3.设计目的 聊天室虽然程序简单,但是在设计与实现的过程中能够充分学到基于Socket的网络编程的技术,使我掌握网络编程的服务的技术,能够充分利用我近期学到的java编程语言。实现聊天功能Client/Server的面向连接的编程技术。使用多线程进行多个客户端和服务器的连接,实现数据的读取与输入。 实现网络聊天系统的设计与实现,让我们掌握网络编程的服务的技术,让同学们更加深刻的了解,掌握这方面的知识 4.Socket介绍 Socket的英文原义是“孔”或“插座”。作为BSD UNIX的进程通信机制,取后一种意思。通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。在Internet 上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。 Socket非常类似于电话插座。在这里,我以一个国家级电话网为例更加清楚的讲解一下Socket。电话的通话双方相当于相互通信的2个进程,区号是它的网络地址;区内一个

JAVA聊天室附完整代码

专业课程设计I 基于JAVA的聊天室设计与实现 一、课题容和要求 基于网络的文本交互软件的设计和实现,设计和实现一个简单的基于网络的文本消息发送和接收软件。基本要求:该软件能实现文本消息发送和接收功能。提高要求(1):支持以多播方式发送文本消息,提高要求(2):性能稳定,界面友好。按课程设计报告的要求写出详细的设计和实现报告。 二、设计思路分析 聊天室是一项进行文本交互的软件,应用广泛,并且实用性强的一个非常典型的人机交互系统。在信息世界里,聊天工具的使用是非常频繁的,如MSN、QQ、校通之类的聊天工具许多人都正在使用。此次设计的聊天室系统主要针对文本信息的传送和接收,不能像QQ一样进行图片、音频、视频等文件的传输。虽然其功能简单,但是在开发技术和过程中,能够充分学习和使用JAVA的技术,进一步培养了面向对象程序设计的思想,加深对面向对象程序设计四大特性的理解。 人们日常生活中越来越多地使用聊天室这项应用来为自己的工作和学习服务。一个操作简单,界面友好、运行稳定的聊天室对于小型局域网的用户可以起到很好的交流作用。所谓聊天室就是一个可以让许多用户同时互相通信的网上园地,个人用户可以通过聊天室将自己融入整个主流社会中。 根据目前使用聊天室的用户需求显示,用户对于聊天室主要有以下几点要求: (1)聊天功能:可以实时接收和发送信息,并能支持公聊和私聊的的方式,能够查看聊天记录,聊天过程中能对字体、表情等进行设定等。 (2)用户功能:可以随时注册和登录及注销,并能选择性加好友和删除好友以及查看对方的开放信息,还能看到对方的登录状态。 (3)文件传输功能:用户可以共享资源,能发送及接收文件。 (4)功能:用户可以设定自己的状态,使某些信息对于其他用户是不可见的。 (5)系统稳定:客户端与服务端的连接稳定,不出现或者少出现连接不上的情况。 三、概要设计 1、聊天室的简要功能介绍 该简易聊天室是为许多喜爱聊天的用户开发设计的,和许多大型的网络聊天室相比该小聊天室功能比较简单,但能实现基本的聊天功能,点对多、点对点聊天和基本的用户功能,登录、注销、查看在线用户等。 (1) 用户设置: 功能描述:用户自定义自己的登录名,成功设置后,服务端能接收到新设置的用户名;

相关文档
相关文档 最新文档