局域网聊天课程设计

合集下载

java课程设计---局域网聊天程序的设计与实现

java课程设计---局域网聊天程序的设计与实现

课程设计报告
设计名称:面向对象课程设计
选题名称:局域网聊天程序的设计与实现姓名:学号:
专业班级:
系(院):
设计时间:
设计地点:
面向对象课程设计报告第7 页,共14 页
面向对象课程设计报告第8 页,共14 页
面向对象课程设计报告第9 页,共14 页
面向对象课程设计报告第10 页,共14 页
面向对象课程设计报告第11 页,共14 页
(2).用户使用说明:
在昵称里输入想要使用的名字,在主机地址写入运行服务器端程序的电脑的ip地址,默认为localhost,代表本机,在端口号中输入和服务器端程序约定好的端口号,默认为4331,如果不一致会导致运行失败,最后选择性别后点击“连接”按钮连接服务器,弹出聊天界面。

进入聊天界面后在公共聊天区会自动显示“欢迎xx”信息。

在用户列表会显示在线的用户,点击某个用户的名字后聊天对象自动变成被电击的用户,默认是所有人。

万一用户列表显示不正确,点击刷新按钮可以从服务器重新获取用户列表。

个性化设置(仅本地有效):四种主题,字体和颜色自定义,自动换行,发送快捷键。

有用户退出会在公共聊天区显示系统信息提示并自动刷新用户列表。

(3).测试结果:
运行程序首先出现的登陆界面。

测试用户:Jarry
连接成功后的聊天界面,公共聊天区显示发给所有人的信息,我的频道显示发给指定人的信息。

界面为红色,颜色为蓝色,字体为楷体,聊天对象为Tom。

局域网聊天室 JAVA课程设计

局域网聊天室  JAVA课程设计

《面向对象程序设计》课程设计报告题目:局域网聊天室程序设计院(系):信息科学与工程学院专业班级:计算机科学与技术1201班学生姓名:程伟学号:20121183011指导教师:吴奕2014年12月29日至2015年1月9日华中科技大学武昌分校制面向对象程序设计课程设计任务书一、设计(调查报告/论文)题目局域网聊天室程序设计二、设计(调查报告/论文)主要内容内容:用来提供局域网中用户之间的交互通讯,使用Eclipse与JDK1.6工具,操作系统为WINDOWS,采用面向对象方法完成,包括总体设计、详细设计、编码实现、测试。

运用套接字Socket连接技术,实现客户端的套接字对象和服务器端的套接字对象之间的输入输出流的连接,达到数据报通信的目的基本功能与要求:实现聊天室服务器端的要求:①设计实现在特定端口上进行侦听,等待客户端的连接。

②用户确定服务器的侦听端口。

③系统能向已经连接到服务器端的用户发送系统消息。

④系统能统计在线人数。

⑤当系统停止服务时,设计程序应能断开所有的用户连接。

实现聊天室客户端的要求:①系统能连接已经开启聊天服务的服务端。

②用户确定要连接服务器端的IP地址与端口号,连接后系统应能提供显示的用户名。

③当服务器端开启的话,实现用户的登录与注销。

④用户可以通过设计的系统向所有人或者某一个人发送消息。

三、原始资料1.《面向对象程序设计课程设计》指导书2.耿祥义.JAVA大学实用教程.北京:清华大学出版社,2009.四、要求的设计(调查/论文)成果1.课程设计报告2.课程设计软件五、进程安排布置任务,查找资料、需求分析1天总体设计1天详细设计1.5天编制源程序实现3.5天测试与修改1天撰写课设报告2天六、主要参考资料[1]张广彬.Java课程设计案例精编(第二版).北京:清华大学出版社,2011.[2]耿祥义.Java课程设计(第二版).北京:清华大学出版社,2008.[3]耿祥义.JAVA大学实用教程.北京:清华大学出版社,2009.[4]邹林达.陈国君Java2程序设计基础.北京:清华大学出版社,2010.[5]邹林达.Java2程序设计基础实验指导.北京:清华大学,2010.指导教师(签名):20年月日目录1需求与总体设计 (1)1.1需求与系统功能图 (1)1.2系统类图 (2)1.2.1服务端系统 (2)1.2.2客户端服务系统 (3)2详细设计 (4)2.1聊天室服务器端的设计 (4)2.1.1ChatServer类 (4)2.1.2ServerListen类 (5)2.1.3ServerReceive类 (5)2.1.4PortConf类 (6)2.1.5Help类 (6)2.1.6UserLinkList类 (7)2.1.7Node类 (7)2.2聊天室客户端设计 (8)2.2.1ChatClient类 (8)2.2.2ConnectConf类 (9)2.2.3UserConf类 (9)2.2.4Help类 (10)2.2.5ClientReceive类 (10)3编码实现 (11)3.1服务器编码实现 (11)3.1.1ChatServer类 (11)3.1.2ServerListen类 (21)3.1.3ServerReceive类 (23)3.1.4PortConf类 (27)3.1.5UserLinkList类 (30)3.1.6Node类 (31)3.1.7Help类 (32)3.2客户端编码实现 (34)3.2.1ChatClient类 (34)3.2.2ClientReceive类 (46)3.2.3ConnectConf类 (48)3.2.4UserConf类 (51)3.2.5Hlep类 (54)4系统测试 (56)总结 (57)1需求与总体设计1.1需求与系统功能图本系统所要实现的主要功能是为广大用户提供一个借助网络进行人际交往的平台。

C++面向对象课程设计报告(局域网聊天程序)

C++面向对象课程设计报告(局域网聊天程序)

XXXXX大学C++面向对象课程设计报告院(系):计算机工程学院专业:计算机网络工程学生姓名: XXXXXX班级:_网络081__学号: 200807255题目:局域网聊天程序起迄日期:_2010.12.20 – 2010.12.31设计地点: XX理工大学2#401指导教师: XXXXXX完成日期: 2010 年 12 月 31 日C++面向对象课程设计报告:局域网聊天程序2 目录一需求分析 (3)1.1 客户机端 (3)1.2 服务器端 (3)二设计内容 (4)2.1 程序整体结构 (4)2.2 各部分子模块功能 (5)2.3 各子模块代码编写 (6)三调试分析 (7)3.1 实际完成情况 (7)3.2 出现的问题及解决方案 (7)3.3 可以改进的地方 (8)3.4 可以扩充的功能 (9)四用户手册 (10)4.1 程序主界面 (10)4.2 获取本地信息 (10)4.3 发送信息 (11)4.4 接收信息 (11)4.5 总体演示 (11)五设计总结 (12)六参考文献 (13)七附录 (14)一需求分析此次开发的网络聊天工具可作为个人的交流工具使用,通信的安全性不是很高,但要求信息的响应速度要较快,让用户充分享受到网络即时消息的方便和快捷。

本聊天工具由服务器端程序和客户端程序两部分组成,整体采用C++平台开发,没有使用管理数据库。

服务器和与客户端都包含与用户的交互式界面,它有必要的界面的按钮,向用户提供网络即时消息的功能。

本聊天需要包含如下本功能:1.1 客户机端✓获取本地IP地址✓获取本地通信端口✓获取远程IP地址✓获取本地主机名✓获取从服务器端发送过来的信息✓给服务器发送用户自定义的数据1.2 服务器端✓获取本地IP地址✓获取本地通信端口✓获取远程IP地址✓获取本地主机名✓获取从服务器端发送过来的信息✓向客户机发送用户自定义的数据3C++面向对象课程设计报告:局域网聊天程序二设计内容2.1 程序整体结构42.2 各部分子模块功能5C++面向对象课程设计报告:局域网聊天程序2.3 各子模块代码编写1)WM_INITDIALOG模块switch(UMsg){case WM_INITDIALOG:CLIENT.INIT_MYSOCKET(hwndDlg);===========================================void MYSOCKET::INIT_MYSOCKET(HWND &hwndDlg){ WSAStartup(0x0101, &wsaData);udp_sd=socket(AF_INET, SOCK_DGRAM, 0);bind(udp_sd, (LPSOCKADDR)&Local_PC, sizeof(Local_PC));WSAAsyncSelect(udp_sd, hwndDlg, WM_USER+1, FD_READ);}2)IDOK模块switch(LOWORD(wParam)){case IDOK:CLIENT.MYSOCK_SEND(hwndDlg);break;===========================================void MYSOCKET::MYSOCK_SEND(HWND &hwndDlg){ GetDlgItemText(hwndDlg, IDC_SEND, Buffer, sizeof(Buffer));sendto(udp_sd, Buffer, strlen(Buffer), 0, (struct sockaddr *)&Remote_PC, len);}3)IDCANCEL模块case IDCANCEL:CLIENT.END_MYSOCKET(hwndDlg);EndDialog(hwndDlg, 0);break;===========================================void END_MYSOCKET(HWND &hwndDlg){ WSAAsyncSelect(udp_sd, hwndDlg, 0, 0);closesocket(udp_sd);WSACleanup();}4)FD_READ模块case WM_USER+1:switch(LOWORD(lParam)){case FD_READ:CLIENT.MYSOCK_RECV(hwndDlg);break;}===========================================void MYSOCKET::MYSOCK_RECV(HWND &hwndDlg){recv(udp_sd, Buffer, sizeof(Buffer), 0);SetDlgItemText(hwndDlg, IDC_RECV, Buffer);}6三调试分析3.1 实际完成情况经过几天的学习及调试,该“局域网聊天程序”仅仅能实现点对点通信,不能实现一对多、多对多、多对一等通信模式,也就是说,只能开启一个客户机和一个服务器,若有多个程序副本在运行,则可能导致接收以及发送数据的混乱。

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课程设计制作简单的Socket聊天局域网

java课程设计制作简单的Socket聊天局域网

2.2 系统整体框架Байду номын сангаас
根据系统软件的功能要求,画出的系统框架图为三组:分别是聊天软件总体图和设 置图及个人资料设置图。 学生局域网聊天软件总体包括在线、返回、断线、设置、关于这个软件、退出等六 项: (如图 1 所示)
沈 阳 大 学
课程设计说明书用纸
NO2
图 1 局域网聊天软件总体框架图
设置包括留言时间、每次启动时出现及发送后最小窗口: (如图 2 所示)
用户的个人参数设置代码如下: :
沈 阳 大 学
课程设计说明书用纸
package chat; import java.awt.*; import yout.*; import javax.swing.*; import java.io.*; import java.awt.event.*; /** * <p>Title: 使用 JAVA 制作的局域网聊天程序</p> * <p>Description: 曹弘葆的 JAVA 作业</p> * <p>Copyright: Copyright (c) 2002</p> * <p>Company: </p> * @author RoadAhead * @version 1.0 */ public class frm_set extends JFrame { private JScrollPane jsp = new JScrollPane(); private JPanel pan_icon = new JPanel(); private JButton jButton1 = new JButton(); private JButton jButton2 = new JButton(); String uicon=""; private JPanel jPanel1 = new JPanel(); private PaneLayout paneLayout1 = new PaneLayout(); private Label label1 = new Label(); private JTextField ed_uname = new JTextField(); private JLabel lab_icon = new JLabel(); private JLabel jLabel1 = new JLabel(); private JCheckBox cbo_onstart = new JCheckBox(); private JCheckBox cbo_winstate = new JCheckBox(); private Label label2 = new Label(); private JTextField ed_ly = new JTextField(); public frm_set() { this.setTitle("设置用户参数"); this.setBounds(200,150,390,300); // this.setBounds(); try { jbInit(); }

局域网内部聊天系统课程设计汇编

局域网内部聊天系统课程设计汇编

摘要随着计算机网络技术的发展,各种各样基于网络的应用也随之诞生,比如基于互联网的信息发布,通信,数据共享等等。

局域网的发展也同样迅速。

很多政府机构,企业,学校,都是先以一个同意的局域网联结在一起,再分别接入Internet。

因此,基于局域网的即时通信工具,就这样应运而生了。

所以本文提出了一个更加合理的设计,并在Windows平台上加以了实现。

在本系统中,分别创建了客户端和服务端两个程序,用多线程实现不同的并行任务。

并进行了人性化的界面设计,使用起来更加简单方便,并且功能十分合理,又易于扩展以及个性化定制。

本文通过局域网聊天系统来具体共享内存实现进程间的数据交换,利用Windows消息机制实现进程间的同步,两种机制结合使用。

关键字:局域网;即时通信;客户端;服务端;多线程;共享内存;信息。

目录1课程设计目的 (1)2课程设计要求 (1)3相关知识 (1)4实训设计分析 (3)4.1体系结构设计 (3)4.2功能模块划分 (4)4.3系统流程图 (6)4.4用户界面设计 (7)5程序代码 (9)6运行结果与分析 (13)7结论 (14)8参考文献 (14)1课程设计目的1)巩固和加深学生对C#语言课程的基本知识的理解和掌握2)掌握C#语言编程和程序调试的基本技能3)利用C#语言进行基本的网络软件设计4)掌握书写程序设计说明文档的能力5)提高运用C#语言解决实际问题的能力2课程设计要求1)分析课程设计题目的要求2)写出详细设计说明3)编写程序代码,调试程序使其能正确运行4)设计完成的软件要便于操作和使用5)设计完成后提交课程设计报告3相关知识1、TCP/IP协议[1]通常包含了一系列与“TCP(传输控制协议)”和“IP(网际协议)”有联系的网络协议,它包括其它的协议,应用软件,甚至网络媒介。

这些协议的示例是:UDP(User Datagram Protocol)协议、ICMP(Internet Control Message Protocol)协议、ARP(地址解析协议)和其他一些协议的协议组。

实验4 在局域网中实现网络对话

实验4 在局域网中实现网络对话

实验4在局域网中实现网络对话一、实验目的:通过使用NetMeeting,来实现局域网中各个计算机之间的对话二、实验内容:1、安装Microsoft NetMeeting2、发送呼叫、接收呼叫及挂断会议3、白板及共享应用程序使用4、传送文件5、远程桌面共享Microsoft NetMeeting是一种新的通信方式,使用它可以进行网络会议、传递信息,便于用户使用音频、视频或聊天的方式与他人“交谈”。

在办公局域网中,使用Microsoft NetMeeting实现网络中各个计算机之间的对话,即进行语音通信。

在单位内部小型局域网中,方便地与其他工作人员进行交谈、下达任务及布置工作等。

三、实验步骤:1、安装Microsoft NetMeeting(1)选择“设置—>控制面板”(2)选择“添加/删除程序—>添加/删除Windows组件”(3)在Windows组件向导对话框中,选择“附件和工具”选项,单击“详细信息…”按钮,在弹出的“附件和工具”对话框中,选择“通讯”选项(4)在弹出的“通讯”对话框中,选择“对话”选项,单击“确定”按钮即可。

(说明:在XP系统中,直接在运行对话框中输入:conf,即可进行设置)(5)在设置结束后,单击“程序—>附件—>通讯—>NetMeeting”命令,按提示步骤进行有关的设置:2、发送呼叫、接收呼叫及挂断会议(1)单击“呼叫”按钮,在此输入对方的IP 地址或计算机名称呼叫结束呼叫传送文件白板聊天 共享程序主持网上会议3、白板及共享应用程序使用 使用“白板”程序进行交流呼叫成功后显示当前连接的用户显示聊天双方谈话的历史记录选择消息将要发送的对象发送消息除了白板之外,还可以共享其他的应用程序。

4、向对方传送文件5、远程桌面共享添加文件(1)单击“共享程序”按钮(2)选择“共享”对话框中的“桌面”选项(3)单击“共享”按钮。

软件课程设计报告--局域网聊天程序

软件课程设计报告--局域网聊天程序

软件课程设计报告——C语言班级:姓名:学号:指导教师:日期:年月日目录1设计内容 (1)2应用程序总体分析与设计 (1)3应用程序各功能模块分析与设计 (2)3.1功能模块 (2)3.1.1服务器模块 (2)3.1.2客户端模块 (2)3.2模块流程图 (4)4程序测试 (6)4.1测试过程 (6)4.1.1 VS 2010截图 (6)4.2测试结果 (7)4.2.1服务器端截图 (7)4.2.2客户器端截图 (7)5程序文档 (8)5.1使用说明 (8)5.2程序说明 (8)6 程序源代码 (8)1设计内容通过C语言程序编程实现一个局域网聊天程序,包括服务器端程序和客户端程序,程序能够实现两台主机或多台主机间的基本通信和文件传输。

2应用程序总体分析与设计A.编译预处理命令#include <Winsock.h>#include <stdio.h>#pragma comment (lib,"wsock32.lib")B.该应用程序中使用的基本Winsock函数有:WSAStartup,socket,bind,listen,accept,connect,shutdown和closesocket等,使用数据传输函数有send和recv。

C.服务器程序的步骤如下:1)初始化以及创建套接字,由WSAStartup()和socket()函数完成。

2)要将指定协议的套接字绑定到本地的IP地址和端口号。

这个过程通过bind()函数来完成。

3)服务器处于监听状态,等待客户端连接,以便为它们的请求提供服务。

服务进程必须在所绑定的名字上进行监听。

因此需要把套接字置为监听模式。

通过listen()函数来实现。

4)服务器程序调用函数accept准备接受来自客户端的连接。

如果有一个客户端这时用connect()函数试图建立连接,服务器端就可以接受连接。

5)建立连接后,服务器端和客户端之间就可以使用send()和recv()函数进行通信。

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

局域网聊天程序课程设计目录第1章需求分析 (4)第2章系统设计方案 (4)第3章性能测试 (5)3.1课程设计成果 (5)第4章结论 (12)第1章需求分析该程序实现局域网内的聊天功能,包括服务器端程序和客户端程序两部分。

客户端程序:包括登陆界面和聊天界面,可连接到服务器,并将消息发送到服务器端和接受服务器端发送来的信息。

服务器端程序:负责发送用户列表和转发客户端发送来的信息功能如下:连接:登陆界面输入完整之后将用户的信息发送到服务器端,服务器端创建相应的连接,并将更新后的用户列表发送给所有用户。

刷新列表:使客户端发送一段指令到服务器端,然后由服务器端广播新的用户列表到所有的客户端。

发送:根据发送者、发送对象、发送的话创建一个字段发送到服务器端。

接收:根据从服务器端接收到的信息判断发送者、接受者、以及要听的话,选择显示在公共聊天区还是私人聊天区。

颜色:设置字体颜色。

字体:设置字体,在楷体和宋体之间切换。

主题:设置背景图片。

快捷键:设置是否开启shift+enter发送快捷键。

第2章系统设计方案本程序根据功能设置了两个界面:登陆界面以及聊天界面。

服务器端后台运行监听,没有设置界面。

用例图如下:本程序可以有多个用户,只需在一台服务器上运行服务端程序,所有的用户连接上了之后就可以正常通信。

本程序共有四个类,在三个源程序里。

In和out是客户端和服务器端通信的关键。

把发送功能写在了发送按钮的事件响应代码中;由于接收是要保持监听状态的,所以把接收功能写在了一个进程中。

快捷键即键盘监听功能写在输入文本框中以实现输入完信息后按shift+enter就能等同点击了发送按钮。

改变颜色功能通过调用系统的showDialog。

第3章性能测试3.1课程设计成果(1).主要代码:登陆界面连接服务器:public void link() throws Exception{ //连接服务器核心代码hostName = jTextField2.getText().trim(); //主机地址port = Integer.parseInt(jTextField3.getText()); //端口号,默认是4331,参考教科书client = new Socket(hostName,port); //主机地址和端口号组成套接字in=new InputStreamReader(client.getInputStream())); //从服务器接收到的参考,不是很懂out = new PrintWriter(client.getOutputStream()); //发送出去的out.println(jTextField1.getText()+"&"+sex); //类似这种格式 123&Boyout.flush(); //刷新.输出缓冲区}聊天界面发送信息:public void enter(){String mywords,outmsg;String withWho = (String)jComboBox1.getSelectedItem(); //获取是和谁说话try{mywords = jTextArea4.getText(); //我说的话if ((mywords.trim()).length() != 0){ //不能发送空消息也不能都发空格outmsg = "withWho&"+name+"&"+withWho+"&"+mywords;//类似withWho&tom&helloout.println(outmsg);out.flush();if (withWho.equals("所有人")){jTextArea2.append(name+"说:"+mywords+"\n");}else { //对某个人交谈jTextArea2.append(name+" 对"+withWho+"说: "+mywords+"\n");}}}catch (Exception ee){System.out.println(ee);jTextArea2.append("与服务器连接中断,请重新登陆!\n");} finally{jTextArea4.setText("");}}聊天界面接收信息代码:public void run() {String inmsg;while (true){ //循环try{inmsg = in.readLine(); //从流中输入System.out.println("inmsg "+inmsg);jList1.setModel(model1); //model和jList参考网上String[] userInfo = inmsg.split("&");if (inmsg.startsWith("new")){ //新人jTextArea1.append("欢迎 "+userInfo[1]+"\n");model1.addElement(userInfo[1]+"〖"+userInfo[2]+"〗");}else if( inmsg.startsWith("old")) {model1.addElement(userInfo[1]+" 〖"+userInfo[2]+"〗"); //更新用户列表 }//一般消息if (inmsg.startsWith("withWho")){String showmsg[] = inmsg.split("&");System.out.println("接收者的名字:"+showmsg[2]+"我的名字"+name+";\n");if (showmsg[2].equals(name)){ //如果是发给自己的消息jTextArea2.append(showmsg[1]+"说: "+showmsg[3]+"\n"); //显示到我的频道} else{jTextArea1.append(showmsg[1]+"说:"+showmsg[3]+"\n") }}}catch (Exception ee){System.out.println("Error at run()"+ee);jTextArea2.append("与服务器连接中断,请重新登陆!\n");// 输出流,输入流设置为 nullin = null;out = null;return;}}}服务器发送给所有人代码:public static void sendAll(String s){if (connections != null){Enumeration e = connections.elements();while(e.hasMoreElements()) {try {PrintWriter pw = new PrintWriter( ( (Socket) e.nextElement() ).getOutputStream() );pw.println(s);pw.flush();} catch (IOException ex){}}}System.out.println(s);}服务器发送给指定人代码:public static boolean sendOne(String name,String msg){if (clients != null){Enumeration e = clients.elements();while(e.hasMoreElements() ) {ClientProc cp = (ClientProc)e.nextElement(); //枚举所有连接中的用户if ((cp.getName()).equals(name)){try{PrintWriter pw = new PrintWriter((cp.getSocket()).getOutputStream());pw.println(msg);pw.flush();return true; //找了返回且返回值为真}catch (IOException ioe){}}}}return false;//没有找到}服务器发送更新用户信息代码:private void updateList() {// 更新用户列表Vector cs = ChatServer.getClients();if (cs != null){for (Enumeration e = cs.elements();e.hasMoreElements() ;) {ClientProc cp = (ClientProc)e.nextElement();String exist_name = cp.getName();String exit_sex = cp.getSex();out.println("old"+"&"+exist_name+"&"+exit_sex); //在这里标记以便判断out.flush();}}}服务器处理接收到的信息:public void run(){while (name == null){try{String inmsg;inmsg = in.readLine(); // 1111&BoyChatServer.sendAll("new"+"&"+inmsg);//发送信息更新用户列表 new&1111&BoyString []userInfo;userInfo = inmsg.split("&");name = userInfo[0];sex = userInfo[1];//out.println("欢迎 "+name); //初次登陆//out.flush();}catch (IOException ee){}}while (true){try { //通过客户端发送代码到服务器来执行相应的功能,in.readLine()监视String line = in.readLine();String[] inmsg = line.split("&");if (line.equals("quit")){ //处理退出事件ChatServer.sendAll("withWho&"+"【系统消息】& "+"所有人&"++" 退出了聊天室");ChatServer.deleteConnection(s,this);return;}else if (line.equals("refurbish")){ //处理刷新用户列表请求this.updateList();}else if (line.startsWith("withWho")){if(inmsg[2].equals("所有人"))ChatServer.sendAll(line);else{if (ChatServer.sendOne(inmsg[2],line)) {//out.println(line);//out.flush();}else{out.println("withWho&"+"【系统消息】& "+inmsg[1]+"&"+inmsg[2]+"已经退出了聊天室");out.flush(); //}}}elseChatServer.sendAll(line); //发给所有的人}catch (IOException e){System.out.println("事件 "+e);try {s.close();}catch (IOException e2){}return;}}}(2).用户使用说明:在昵称里输入想要使用的名字,在主机地址写入运行服务器端程序的电脑的ip地址,默认为localhost,代表本机,在端口号中输入和服务器端程序约定好的端口号,默认为4331,如果不一致会导致运行失败,最后选择性别后点击“连接”按钮连接服务器,弹出聊天界面。

相关文档
最新文档