java聊天工具源代码.doc

合集下载

基于JSP的网络聊天室

基于JSP的网络聊天室

课程名称JAVA Web 应用程序实验名称基于JSP的网络聊天室班级学号姓名一、功能模块:-1.用户注册(注册用户保存在application中)-2.用户登录-3.用户注销-4.留言功能二、要求:- 1.用户注册、登录都要进行客户端检查是否信息为空-2.用户登录之后,服务器端需要检查是否是合法的用户-3.显示的每条信息都包括登录用户姓名、留言内容及留言时间-4.其它内容可以自己扩展三、实验步骤和模块实验总体来说分为三大部分,分别为:用户注册、用户登录和用户留言,其中用户注销为一个小功能,因此不做过多描述1.用户注册首先来介绍第一部分用户注册界面,在该界面中用户填写信息后提交,程序自动将用户姓名和密码保存在application中以便在用户登录时核对信息,源代码为:form.html<html><head><title>Java Web</title><script langguage="JavaScipt">function checkvalid(){var str1=.value;var str2=login.pwd.value;var str3=login.sex.value;var str4=login.pwd.value;var str5=login.pwd2.value;if(str1==""){alert("没有输入用户名");return false;}if(str2==""){alert("没有输入密码");return false;}if(str3==""){alert("没有输入性别");return false;}if(str4!=str5){alert("密码不匹配");return false;}}</script><body><form method="post" action="ex08.jsp" name="login"> <div align="center">name(必须输入项):<input type="text" name="name"><br>passord(必须输入项):<input type="password" name="pwd"><br>passord(重新输入):<input type="password" name="pwd2"><br></div><p align="center">性别(必须输入项):<input Type="Radio" Name="sex" Value="男" Checked>男<input Type="Radio" Name="sex" Value="女">女 </p> <p align="center">户口所在城市</p><p align="center"><select name="City" ><option selected>北京市</option><option>上海市</option><option>天津市</option><option>重庆市</option></select></p><p align="center">曾经居住地</p><p align="center"><select name="juzhu" multiple ><option>北京市</option><option>上海市</option><option>天津市</option><option>重庆市</option></select></p><p align="center">爱好:</p><div align="center"><input type="checkbox" name="JOB" value="上网" >旅游<br><input type="checkbox" name="JOB" value="游戏">游戏<br><input type="checkbox" name="JOB" value="看电影">看电影<br><input type="checkbox" name="JOB" value="看书">看书<br><input type="checkbox" name="JOB" value="听音乐">听音乐<br><input type="checkbox" name="JOB" value="其他">其他<br><p align="center">用户备注信息:</p><p align="center"><textarea name="liuyan" rows="10" cols="30"></textarea></p><div align="center"><input type="reset" name="reset" value="重置"><input type="submit" name="submit" onClick="return checkvalid()" value="提交"></div></form></body></html>值得注意的是,在注册界面一定要完成任务要求,即进行客户端检查是否信息为空,同时密码两次输入是否匹配。

SimpleChat程序(一对多聊天源代码 java)

SimpleChat程序(一对多聊天源代码 java)

package com.wyh.chatRoom;import java.awt.BorderLayout;import java.awt.Color;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import .InetAddress;import .ServerSocket;import .Socket;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTabbedPane;import javax.swing.JTextArea;import javax.swing.JTextField;import javax.swing.JToolBar;public class wyhChatRoom extends JFrame implements ActionListener{ private String name; //服务器聊天室的图形用户界面private JComboBox combox; //网名private JTextField text; //输入IP地址或域名的组合框private JTabbedPane tab; //选项卡窗格,每页与一个Socket通信public wyhChatRoom(int port ,String name) throws IOException{super("聊天室"+name+" "+InetAddress.getLocalHost()+"端口:"+port);this.setBounds(320, 240, 440, 240);this.setDefaultCloseOperation(EXIT_ON_CLOSE);JToolBar toolbar=new JToolBar(); //工具栏this.getContentPane().add(toolbar,"North");toolbar.add(new JLabel("主机"));combox=new JComboBox();combox.addItem("127.0.0.1");toolbar.add(combox);combox.setEditable(true);toolbar.add(new JLabel("端口"));text=new JTextField("1251");toolbar.add(text);JButton button_connect=new JButton("连接");button_connect.addActionListener(this);toolbar.add(button_connect);tab=new JTabbedPane(); //选项卡窗口this.setBackground(Color.blue);this.getContentPane().add(tab);this.setVisible(true);=name;while(true){Socket client=new ServerSocket(port).accept();//等待接受客户端的连接申请tab.addTab(name, new TabPageJPanel(client));//tab添加页,页中添加内部类面板tab.setSelectedIndex(tab.getTabCount()-1);//tab指定新页为选择状态port++;}}public void actionPerformed(ActionEvent e){if(e.getActionCommand()=="连接"){String host=(String)combox.getSelectedItem();int port=Integer.parseInt(text.getText());try{tab.addTab(name, new TabPageJPanel(new Socket(host,port)));//连接成功tab添加页tab.setSelectedIndex(tab.getTabCount()-1);//tab指定新页为选中状态}catch(IOException e1){e1.printStackTrace();}}}//面板内部类,每个对象表示选项卡窗格的一页,包含一个Socket和一个线程private class TabPageJPanel extends JPanel implements Runnable,ActionListener{Socket socket;Thread thread;JTextArea text_receiver;//显示对话内容的文本区JTextField text_sender; //输入发送内容的文本行JButton buttons[]; //发送‘离线’删除页按钮PrintWriter cout; //字符输出流对象int index;TabPageJPanel(Socket socket) {super(new BorderLayout());this.text_receiver=new JTextArea();this.text_receiver.setEditable(false);this.add(new JScrollPane(this.text_receiver));JPanel panel=new JPanel();this.add(panel,"South");this.text_sender=new JTextField(16);panel.add(this.text_sender);this.text_sender.addActionListener(this);String strs[]={"发送","离线","删除页"};buttons =new JButton[strs.length];for (int i = 0; i < buttons.length; i++) {buttons[i]=new JButton(strs[i]);panel.add(buttons[i]);buttons[i].addActionListener(this);}buttons[2].setEnabled(false);this.socket=socket;this.thread=new Thread(this);this.thread.start();}@Overridepublic void run() {try {this.cout =new PrintWriter(socket.getOutputStream(),true);this.cout.println(name);//发送自己网名给对方BufferedReader cin=new BufferedReader(new InputStreamReader(socket.getInputStream()));String name=cin.readLine(); //接收对方网名index=tab.getSelectedIndex();tab.setTitleAt(index, name);String aline=cin.readLine();while(aline!=null && !aline.equals("bye")){tab.setSelectedIndex(index);text_receiver.append(aline+"\r\n");Thread.sleep(1000);aline=cin.readLine();}cin.close();cout.close();socket.close();buttons[0].setEnabled(false);//接收方的发送按钮无效buttons[1].setEnabled(false);//接收方的离线按钮无效buttons[2].setEnabled(false);//接收方的删除按钮无效} catch (Exception e) {e.printStackTrace();}}@Overridepublic void actionPerformed(ActionEvent e) {if(e.getActionCommand()=="发送"){this.cout.println(name+"说:"+text_sender.getText());text_receiver.append("我说:"+text_sender.getText()+"\n");text_sender.setText("");}if(e.getActionCommand()=="离线"){text_receiver.append("我离线\n");this.cout.println(name+"离线\n"+"bye");buttons[0].setEnabled(false);buttons[1].setEnabled(false);buttons[2].setEnabled(false);}}}public static void main(String[] args) throws IOException {new wyhChatRoom(2001, "航哥哥");//启动服务端,约定端口,指定网名}}。

本科毕业论文-基于JAVA的聊天系统的设计与实现【范本模板】

本科毕业论文-基于JAVA的聊天系统的设计与实现【范本模板】

摘要随着互联网的快速发展,网络聊天工具已经作为一种重要的信息交流工具,受到越来越多的网民的青睐.目前,出现了很多非常不错的聊天工具,其中应用比较广泛的有Netmeeting、腾讯QQ、MSN-Messager等等。

该系统开发主要包括一个网络聊天服务器程序和一个网络聊天客户程序两个方面。

前者通过Socket套接字建立服务器,服务器能读取、转发客户端发来信息,并能刷新用户列表。

后者通过与服务器建立连接,来进行客户端与客户端的信息交流。

其中用到了局域网通信机制的原理,通过直接继承Thread类来建立多线程。

开发中利用了计算机网络编程的基本理论知识,如TCP/IP协议、客户端/服务器端模式(Client/Server模式)、网络编程的设计方法等。

在网络编程中对信息的读取、发送,是利用流来实现信息的交换,其中介绍了对实现一个系统的信息流的分析,包含了一些基本的软件工程的方法。

经过分析这些情况,该局域网聊天工具采用Eclipse为基本开发环境和java 语言进行编写,首先可在短时间内建立系统应用原型,然后,对初始原型系统进行不断修正和改进,直到形成可行系统关键词:局域网聊天 socket javaAbstractAlong with the fast development of Internet,the network chating tool has already become one kind of important communication tools and received more and more web cams favor. At present, many extremely good chating tools have appeared . for example,Netmeeting, QQ,MSN—Messager and so on. This system development mainly includes two aspects of the server procedure of the network chat and the customer procedure of the network chat。

模拟QQ聊天室需求分析报告(DOC)

模拟QQ聊天室需求分析报告(DOC)

文档名称: 需求分析报告项目名称: 模拟QQ聊天系统项目负责人:班级:学校:1引言1.1 编写目的作为用户与该系统软件开发维护人员共同遵守的软件需求规范说明, 本《软件需求说明书》的主要目的是明确所要开发的软件所应具有的功能、性能, 使系统分析人员和软件设计人员能清楚地了解用户的需求, 并在此基础上进一步提出概要设计和完成后续设计与开发工作, 为软件开发范围、业务处理规范提供依据, 也是应用软件进行合同最终验收的依据。

客户登陆后可以通过服务器转发, 实现一对一和多对多聊天, 闪动托盘图标提示到来信息, 实现呼叫功能, 并播放不同音乐来提示。

系统可以实时显示目前其它用户的状态, 保存并能察看聊天纪录, 并可以申请新的用户号码。

用户登陆成功, 将保存其号码, 以便下次登陆时, 不必再输入而可以直接选择, 显示登陆时间。

服务器端, 向各个客户端发布系统消息。

接受来自客户端的各种信息并分别处理。

自动分配8位用户号码, 并保存该用户, 同时将信息返回给客户端。

用户下线, 将此用户下线消息发给各客户端, 并改写用户在服务器端的状态。

系统易用、美观的图形界面, 可以实现系统托盘。

此外系统还涉与系统数据安全和用户管理的问题、各种代码使用和维护问题、数据安全和数据维护问题、聊天记录和输出等问题, 因此还要求系统具有系统管理和事务处理功能。

总而言之, 要求通过系统的开发, 达到系统项目的总体目标是: 在整个系统的框架下, 结合客户端与服务器端情况的需要实现对数据更新、数据查询、数据统计、数据分析等功能进行有效的管理。

并提供用户友好接口, 满足用户需求的软件。

预期的使用者就是各单位办公区、联系密切的同学朋友与家人、公司同事等, 使用前仔细阅读此软件说明是很必要的, 以便更好的使用、管理和维护此系统!1.2 背景1.待开发软件名称: 模拟QQ聊天工具2.用户: 所有使用QQ的用户。

3、实现软件的单位:4、QQ作为基础的聊天工具, 方便所有计算机用户的交流。

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

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

Java程序课程设计任务书JAVA聊天室的系统的设计与开发1.主要内容:用JAVA实现基于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聊天工具代码

java聊天工具代码
tamsg.append(exc.toString来自)); } }
else if(pareTo("close")==0) {
try {
DataInputStream is=new DataInputStream(socket.getInputStream());
if(pareTo("start")==0) {
try {
int po=Integer.parseInt(port.getText());
svsocket=new ServerSocket(po);
daemons=new Daemon[MAXUSER];
close.addActionListener(this);
add(panel2,BorderLayout.SOUTH);
tamsg=new TextArea();
tamsg.setBackground(Color.PINK);
tamsg.append("输入你要链接的地址,然后按(link)按钮\n");
}
catch (Exception exc) {
tamsg.append("error happended link\n");
tamsg.append(exc.toString());
}
}
else if(pareTo("id_ok")==0)
DataOutputStream os=new DataOutputStream(socket.getOutputStream());
os.write(strmsg.getBytes());

聊天工具 - 界面及事件处理

聊天工具 - 界面及事件处理

2. 必须有一个名为“Chat”的按钮;
JButton buttonChat = new JButton("Chat");
图1 P2P Chatter
3. 界面效果可有可无; 4. 必须有一个成员是下页的ChatDialog
ChatDialog dialog = null;
2 P2P聊天工具的实现
2.2 实现聊天界面(ChatDialog.java):例如图2 要求:
1. 2. 3. 4. 必须有一个文本框用于显示聊天记录,可以使用
JTextArea msgRecordArea = new JTextArea();
必须有一个文本框用于记录用户的输入;
JTextArea msgSendArea = new JTextArea();
实验09 P2P聊天工具 - 界面事 件处理
实验目的
• 加深对界面编程的理解 • 加深对事件处理于事件响应的理解 • 掌握Jframe、ActionListener、 JTextField/JTextArea和Jbutton的使用方法。
实验内容
• 1. 实现P2P聊天工具的界面 • 2. 实现P2P聊天工具的事件处理与响应功能
必须有一个名为“发送”的按钮;
JButton buttonSend = new JButton("发送");
界面效果可有可无 图2 Chat Dialog
3. P2P聊天工具的事件处理
3.1 实现系统界面的事件处理与响应 要求:当用户点ecordArea.append(…);
2. 清空msgSendArea
msgSendArea.clear();
扩展知识
• 查阅JDK API,获取ScrollPane的使用方法; • 为msgRecordArea增加与QQ类似的消息记录显 示方式。

QQ聊天工具开发文档

QQ聊天工具开发文档

QQ聊天工具开发文档一、设计背景:随着计算机网络日新月异的发展,人们的交流方式越来越多,传统的交流方式,如:信件、电报、电话等已经难以满足人们的交流要求,在互联网上即时的和好友取得联系,已经成为当今社会人们主流的联系方式。

两台计算机之间进行即时通讯、发送文件等交流方式已经成为时代的潮流。

因此出现了QQ、MSN等聊天工具。

QQ作为一款非常使用便捷的聊天工具,用java来实现是可行的。

网络上也出现了各种各样的聊天工具,都是人们自己编写的。

作为一个java初学者来说,我们的QQ聊天工具并不需要拥有各种各样的强大的功能。

基于这样的定位,我们开始设计自己的QQ聊天工具。

二、设计目的:期末设计三、设计思路:一款最基本的聊天工具由几部分组成:图形界面,协议,线程和数据库。

只要掌握这几个方面,编写聊天工具手到擒来。

在我的设计过程中,图形界面采取了比较好用的AWT,因为它方便且易于修改,初学者可以尝试使用,的确是不错的。

至于其他,大抵与其他工具类似,不说也罢。

四、原理流程图操作时先启动服务器(server),然后再启动客户端(client)。

详细说一下服务器的情况:首先输入账号才能查看聊天记录和个人信息。

切换是在聊天记录和服务器信息(如图所示)之间切换。

清空很简单,就是清屏。

服务器中会显示登录信息,谁登陆了,啥时候登陆的。

还可以显示各用户的全部操作,如查看他人资料,发起聊天,传送文件等等。

接下来是启动客户端,即登录。

登录界面:登陆界面做的有点差,还请老师多多包涵啊。

本来想插个图片的,没找的适合的。

账号就是注册时给的号码,密码不用说了。

点击注册后会进入一个界面:在此界面输入自己的个人信息就可以完成注册了。

注册完会有一个号码,就是你的账号。

注册完,输入账号密码,就可以登录进去。

登录后,会出现聊天主体界面:从图中可以看出该界面大体构造和功能。

最上面是用户的头像和一些信息。

中间就是好友界面,功能和QQ有些类似,这里不一一介绍。

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

v1.0可编辑可修改源代码项目 QQClientProject:LoguiGui 代码 :package class LoguiGui extends {public LoguiGui() {initComponents();}public Socket connectServer() {Socket s = null;try {s = new Socket("", 6666);} catch (Exception e){ ();}return s;}private void jButton1ActionPerformed evt) {quals(name)) {(this, "用户名不能为空, 请输入 ", "异常提示", ;return;}String pwd = new String());"密码: " + pwd);if () == 0) {v1.0可编辑可修改(this, "密码不能为空,请输入", "异常提示", ;return;}final Socket s = ();endMsg(msg, s);eceiveMsg(s);etVisible(true);}});();} else {(this, "登录失败:" + r, "异常提示", ;}private void jLabel3MouseClicked evt) {etVisible(true);}});}RegiterGui代码:package class RegiterGui extends {private static final String url = "jdbc:odbc:mydata";private static final String user = "mzz";v1.0可编辑可修改private static final String pwd = "mzz";public Socket connectServer() {Socket s = null;try {s = new Socket("", 6666);} catch (Exception e){ ();}return s;}private void jButton1ActionPerformed evt){ quals(name)) {(this, " 用户名不能为空 , 请输入 ", " 异常提示 ", ;return;}if == 0) {(this, " 密码不能为空 , 请输入 ", " 异常提示 ", ;return;}if == 0) {(this, " 密码不能为空 , 请确认 ", " 异常提示 ", ;return;}if (!(pwd0, pwd2)) {(this, " 密码输入错误 , 请重新输入 ", " 异常提示 ", ;return;v1.0可编辑可修改}String sex = null;if ()) {sex = ();"性别: " +sex); } else if ()){ sex = ();"性别: " +sex); } else if ()){ sex = ();"性别: " + sex);}String hobby =null;if ()) {hobby = ();"爱好: " +hobby); } else if ()){ hobby = ();"爱好: " +hobby); } else if ()){ hobby =();"爱好: " + hobby);}String birth = () + "年" + "" + () + "月";" 生日: " + birth);String city = (String) ());"城市 :" + city); Stringprofession = ();"职业 :" + profession);Socket s = ();endMsg(msg, s);eceiveMsg(s);tart();}public JList getUsersListItem() {return usersListItem;}public void setUsersChatItem(String usersChat) { String s= void addUsers(List<User> list) { DefaultListModel dlm = (DefaultListModel) ();for (User u : list) {(u);}}public void addNewUser(User u) { DefaultListModel dlm = (DefaultListModel) (); (u);}public void delUser(User curu) {DefaultListModel dlm = (DefaultListModel) ();(curu);}private void formWindowClosing evt) {endMsg(msg, s);(0);quals(text)) {(this, "发送内容不能为空,请输入", "异常提示", ;return;}User[] CUser=new User[MAXUSER];String UsersName;int i=0;Object[] listname =();if==0){(this, "请在在线好友中选择你要聊天的好友", "异常提示", ;return;}for(Object a:()){CUser[i]=(User)a;i++;}int j=0;UsersName=CUser[j].getUserName();j++;for(;CUser[j]!=null;j++){UsersName=UsersName+","+CUser[j].getUserName();}String UsersText="\n"+" 您向 "+UsersName+"发送消息: \n"+"\n"; chat2=new Message(4,u,CUser,text); ().sendMsg(chat2, s); (null);}private void scriptMouseClicked evt) {eceiveMsg(s);etUserName();String s=().getUserName()+"向您发送信息:\n"+()+"\n"; (s);}else if()==5){tart();}}catch(Exception e){();}}}ServerWorker 代码:package qqserverproject;import class ServerWorker extends Thread { eceiveMsg(s);endMsg(msg1, s);}else if () == 1) {endMsg(msg1, s);if (result == null) {endMsg(msg2, s);endMsg(newUserMsg, curS);}endMsg(user2, curS);i++;}while()[i]!=null);}else if () == 5) {endMsg(msg, curs);}break;}else {"消息类型不正确 ");}}}private String register(User u) {sUserExits())) {return "用户名已被使用";}oRegister(u)) {return null;} else {return "注册失败,请联系管理员"; }}private String Logui(User u) { sUserExits())) {return "用户名不存在,请注册"; }oLogui(u)) {return null;//注册成功,返回空} else {return "密码错误";}}}。

相关文档
最新文档