搜档网
当前位置:搜档网 › Java Socket聊天程序源代码

Java Socket聊天程序源代码

Java Socket聊天程序源代码
Java Socket聊天程序源代码

本程序是基于java语言的Socket聊天程序,采用TCP传输协议,实现两个人之间的信息交互。在形成最终结果之前,我经历了两个过程程序,两个过程均为半成品,他们反映了我整个课程设计中的思考过程,在一个较为系统思考过程后,socket思想一层一层加固,让我映像很深刻,收获很多。在此文档中,我将演示我两个过程程序的思考过程,然后对源代码进行讲解,但最终上传的代码为制成品。

在两个过程程序中,TestServer1和TestClient1为第一个过程,TestServer2和TestClient2为第二个过程,MySingleThreadServer1和MySingleThreadClient1为最终程序。其中,TestServer2和TestClient2实现了多线程,一个线程负责接收,另一个线程负责发送,MySingleThreadServer1和MySingleThreadClient1实现了基于GUI的聊天。控件并非像MFC那样很容易就可以通过拖动组件实现,java是通过程序的编写来实现,我采用awt 组件编码实现GUI,界面很简单,但花了不少时间来布局。

核心代码讲解:

三个过程程序都牵涉了java socket编程最核心的思想,以下为核心的讲解。

1.服务器端

Java Socket服务器端需要引入两个包,java.io包和https://www.sodocs.net/doc/e38153575.html,包,io包是解决输入输出流的问题,而net包包含了socket编程所需的API.

服务器端首先要得到ServerSocket的对象,即ServerSocket ss = new ServerSocket(5555); 5555为服务器端的端口号。Socket s = ss.accept();服务器端Socket 对象通过accept()方法开始监听链接过来的客户端信息。如果有客户端有信息过来,则对象s调用输入输出流的方法,如s.getInputStream(),同时把得到的InputStream 封装在DataInputStream当中,在客户端与服务器端通信时,有可能两端存在于不同的操作系统,

封装在DataInputStream可以很好的解决这个问题。

2.客户端

其实客户端代码与服务器端大多类似,有一点显著不同,在客户端没有ServerSocket类,即客户端不用监听任何链接,他只需要发送链接即可。Socket s = new Socket(String IPAddr,int port),IPAddr为服务器端的IP地址,port为服务器端的端口号即5555,由于本程序服务器端和客户端在同一主机上,所以服务器端IP地址为127.0.0.1。通过IPAddr 和port两个参数就可以得到Socket对象s,接下来的步骤就和服务器程序类似了。

对三个过程程序的详解

Procedure1:

服务器端核心代码如下:

ServerSocket ss = new ServerSocket(5555);

Socket s = ss.accept();

OutputStream os = s.getOutputStream();

DataOutputStream dos = new DataOutputStream(os);

InputStream is = s.getInputStream();

DataInputStream dis = new DataInputStream(is);

InputStreamReader isr = new InputStreamReader(System.in); //重键盘读入数据BufferedReader br = new BufferedReader(isr); //把从键盘读入的数据放入缓冲

String info;

while(true){

info = dis.readUTF();

System.out.println("客户端说:" + info);

if(info.equals("goodbye")){

break;

}

info = br.readLine();

dos.writeUTF(info);

System.out.println("服务器说:" + info);

if(info.equals("goodbye")){

break;

}

}

客户端核心代码如下:

Socket s = new Socket("127.0.0.1",5555);

InputStream is = s.getInputStream();

DataInputStream dis = new DataInputStream(is);

OutputStream os = s.getOutputStream(); DataOutputStream dos = new DataOutputStream(os);

InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr);

String info;

while(true){

info = br.readLine();

System.out.println("客户端说的是:" + info);

dos.writeUTF(info);

if(info.equals("goodbye")){

break;

}

info = dis.readUTF(); //阻塞函数

System.out.println("服务器端说的是:" + info);

if(info.equals("goodbye")){

break;

}

}

服务器端和客户端在while(true)循环处各不相同,服务器端是dis.readUTF(),必须首先读取客户端传过来的信息,才能通过info = br.readLine();dos.writeUTF(info);从键盘中读取信息再发送给客户端。相反,客户端必须首先通过br.readLine();读取键盘信息,才能接收服务器发送来的信息。

思考1:这个简易的聊天程序已经实现了服务器和客户端的信息交互,但此时已经出现了一个必然出现的问题,比如拿服务器端来讲,当服务器通过dos.writeUTF(info)发送消息给客户端后,在while循环体内,他又要执行info = dis.readUTF()代码,而readUTF()是一个阻塞函数,如果客户端没有发送过来,他就阻塞在那个地方,此时下面部分的代码dos.writeUTF(info)就不能执行,即服务器端不能发送消息出去。

要怎样解决这个问题呢?怎样readUTF()阻塞的同时又可以writeUTF(info)发送出消息呢?显然,一条路径走不通时应该考虑走另一条路,于是,多线程在这里引入了。Procedure2就是这样出来的。

Procedure2:

Procedure2相比procedure1加入了多线程的部分,一个线程负责专门去接受消息,另一个负责发送消息。当服务器端负责接收的线程因为readUTF()被阻塞不能发送消息时,负责发送消息的线程让服务器端也能发送消息。同样的原理,客户端也如此。

服务器端加入的关键代码如下:

class ServerReadThread extends Thread{

private DataInputStream dis;

public ServerReadThread(DataInputStream dis){ this.dis = dis;

}

public void run(){

String info;

try{

while(true){

info = dis.readUTF();

System.out.println("客户端说:" + info);

if(info.equals("goodbye")){

System.out.println("客户端拜拜了!"); System.exit(0);

}

}

}catch(IOException e){

e.printStackTrace();

}

}

}

class ServerWriteThread extends Thread{

private DataOutputStream dos;

private BufferedReader br;

public ServerWriteThread(DataOutputStream dos,BufferedReader br){ this.dos = dos;

this.br = br;

}

public void run(){

String info;

try{

while(true){

info = br.readLine();

dos.writeUTF(info);

if(info.equals("bye")){

System.exit(0);

}

}

}catch(IOException e){

e.printStackTrace();

}

}

}

负责接受的类ServerReadThread继承Thread,并构造一个DataInputStream对象参数的构造函数,接收对方信息。负责发送的类ServerWriteThread继承Thread,并构造一个DataInputStream对象和BufferedRead对象的双参数的构造函数,负责发送消息。new ServerReadThread(dis).start();new ServerWriteThread(dos,br).start();开启两个线程。客户端原理与服务器端类似,就不做更详细的讲解

JAVA代码编写一简单网络聊天程序

要求:聊天室服务器、聊天室客户端;客户端之间可以聊天。 因为我是初级选手,想借此程序分析学习java,所以代码最好多一点注释... 分数有限,望大家不吝赐教!!问题补充: 需要图形用户界面哦,最好用swing组件 服务器端:采用多线程,可以向客户广播:当前聊天室人数,客户名称列表,客户进入离开提示; 客户端:可以设定昵称,性别,客户间可以私聊 服务器端: import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; import https://www.sodocs.net/doc/e38153575.html,.*; public class Server extends JFrame implements ActionListener{ JPanel contentPane; JLabel jLabel2 = new JLabel(); JTextField jTextField2 = new JTextField("4700"); JButton jButton1 = new JButton(); JLabel jLabel3 = new JLabel(); JTextField jTextField3 = new JTextField(); JButton jButton2 = new JButton(); JScrollPane jScrollPane1 = new JScrollPane(); JTextArea jTextArea1 = new JTextArea(); ServerSocket server = null; Socket socket = null;BufferedReader instr =null;PrintWriter os=null ; //Construct the frame public Server() { jbInit(); } class MyThread extends Thread{//该线程负责接受数据 public void run(){ try{ while(true){ this.sleep(100); instr= new BufferedReader(new InputStreamReader(socket.getInputStream())); if(instr.ready()){ //检查是否有数据 jTextArea1.append("客户端: "+instr.readLine()+"\n"); } } }catch(Exception ex){} }

JAVA局域网聊天系统源代码

这是我自己做的简单聊天系统客户端 package LiaoTianSys; import java.awt.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.io.*; import https://www.sodocs.net/doc/e38153575.html,.Socket; import https://www.sodocs.net/doc/e38153575.html,.UnknownHostException; public class ConversationFrame extends JFrame { JScrollPane jsp; JTextField jtf; static JTextArea jta; //JTextArea jat1,jta2; JButton enter=new JButton("发送"); JButton jb=new JButton("聊天室好友"); JButton jb2=new JButton("进入聊天室"); JButton jb3=new JButton("刷新在线人员列表"); JPanel jp,jp1,jp3,jp4; DefaultListModel listmodel = new DefaultListModel(); //static String[] NAME=new String[10]; String n[]={"f"}; JList list=new JList(listmodel); JLabel time=new JLabel("当前系统时间:"); JLabel showtime=new JLabel("显示时间"); JLabel jl=new JLabel("输聊天信息"); JLabel nicheng=new JLabel("昵称"); JTextField NCshuru=new JTextField(10); static DataOutputStream dos; static DataInputStream dis; //final LoginFrame lf; Socket socket; public ConversationFrame() { Container con=getContentPane(); con.setLayout(new BorderLayout()); jp=new JPanel(); setSize(700,600); setLocation(100,100); jta=new JTextArea(); jta.setEditable(false);

java简单聊天小程序

网络编程java简单聊天小程序[下次修改成多线程的,这个必须等待对方输入结束,有机会修改成可视化窗口] By 刘汪洋 写入正确的ip地址即可正常用当然目前只停留在命令行界面 还没有写成可视化窗口界面 运行时请带上参数 如java TransServer 张三 Java TransClient 李四 ( 和刘正南在局域网试验的截图成功 这是修改后的 加上了姓名! ) (修改前的截图)

代码: 客户端: package com.baidu.chat; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import https://www.sodocs.net/doc/e38153575.html,.Socket; import https://www.sodocs.net/doc/e38153575.html,.UnknownHostException; // 简单聊天小程序客户端 public class TransClient { public static void main(String[] args)

{ if(args[0]==null) args[0] = "他"; startClient(args[0]); } private static void startClient(String name) { Socket sk = null; BufferedReader bufr = null; try { sk = new Socket("127.0.0.1",10000);// 1 创建 socket服务 bufr = new BufferedReader(new InputStreamReader(System.in));// 2 获取录入键盘 PrintWriter out = new PrintWriter(sk.getOutputStream(),true);// 3 获取输出流true表示自动刷新 BufferedReader bufIn = new BufferedReader(new InputStreamReader(sk.getInputStream()));// 4 获取输入流 // 5 发送获取 String text_send = ""; String text_get = ""; String ServerName = ""; System.out.print("聊天已开启..."+"\r\n"+"我说:");

java版基于UDP协议网上聊天程序课程设计

湖南工业大学 课程设计 资料袋 计算机与通信学院学院(系、部)2013 ~ 2014 学年第 1 学期课程名称网络协议分析指导教师李建设职称副教授 学生姓名专业班级网络工程学号 题目基于UDP协议网上聊天程序 成绩起止日期2013 年11 月25 日~2013 年12 月13 日 目录清单

5 6 课程设计任务书 2013 —2014学年第1 学期 学院(系、部)计算机与通信学院专业网络工程班级102 课程名称:网络工程学生姓名: 设计题目:基于UDP协议网上聊天程序指导教师:李建设 完成期限:自2013 年11 月25 日至2013 年12 月13 日共 3 周 容 及 任 务 一、设计内容 实现一个基于UDP协议的简单的聊天程序,包括服务器和客户端。 1.支持多人聊天。 2.客户端具有图形化用户界面。 二、设计任务 课程设计说明书(纸质+电子版),内容包括:设计内容、系统分析(包括可行性分析、需求分析等)及功能分析;系统设计(要求画出系统整体功能框图、流程图、并给出相应地关键的代码且对所使用的主要数据结构进行说明等。)、设计总结(评价/遇到的问题/体会/建议等)、使用说明等。 三、设计要求 1.按功能要求开发系统,能正确运行。程序代码书写规范,有充足的注释。 2.课程设计所使用的编程语言任选,但建议使用C或C++; 3.绿色软件:程序运行不需安装,避免写系统和注册表; 进 度 安 排 起止日期工作内容 2013-11-25~2013-11-3 选题 2013-12-1~2013-12-3 系统分析和设计; 2013-12-4~2013-12-8 熟悉软件开发工具、编码系统、系统测试 2013-12-9~2013-12-13 撰写并提交课程设计说明书(含电子文档)、源程序等。

Java源代码___聊天室

Java 聊 天 室 制作人:_____杨永生_____ 制作时间:2012.9.26 目录 1本文简介 (2) 2聊天室截图与说明 (2) 2.1用Java编译: (2) 2.2服务器登录界面 (2) 2.3服务器窗口 (2) 2.4客服端登录界面 (3) 2.5客服端窗口 (3) 3服务器端 (6) 3.1MyServer()方法 (6) 3.2Login()方法 (10) 3.3Time()方法 (13) 4客户端 (14) 4.1MyClient()方法 (14) 4.2Login()方法 (18) 4.3Time()方法 (20)

1 本文简介 这是一个简单的Java聊天室,仅提供给一些刚学Java的学生做实验,本文也是仅供参考. 本文代码都有注释,希望读者能读懂代码,本实验内部还有一些错误,比如只能一条一条的发信息,不能连发,希望能解决本问题的朋友能给我发信息,我的QQ号就是百度号! 2 聊天室截图与说明 2.1 用Java编译: 本代码有七个类,放在六个java文件中,类名在下方希望读者自己观看, 2.2 服务器登录界面 要先运行服务器端的程序 用户名:y 密码:1 用户名密码可以自己设定点击确定可以登录,2秒后到服务端界面 2.3 服务器窗口

聊天室的IP为本机的网络虚拟IP,在任何电脑上都能用,端口应设置在1024以后, 2.4 客服端登录界面 和服务器端的登录一样 2.5 客服端窗口

当登录上后客服端就显示已经连接了,此时服务器端的窗口如下

由于本程序设计的不是很完整,具体的聊天要先从客服端开始: 在客服端输入一条聊天内容后按确定,在服务器端就可以收到信息,之后客户端不能输入了,要等待服务器端来信息后才能继续输入信息. 想要结束聊天,直接可以关闭窗口,也可以输入’bye’后断开聊天

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.sodocs.net/doc/e38153575.html,.DatagramPacket; import https://www.sodocs.net/doc/e38153575.html,.DatagramSocket; import https://www.sodocs.net/doc/e38153575.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局域网聊天程序设计与实现(附源代码)

局域网聊天课程设计 摘要 随着互联网的发展,网络聊天工具作为一种交流工具,已经受到网民的青睐。目前,出现了很多功能强大的聊天工具,其中应用比较广泛的有腾讯QQ、MSN-Messager等等。 即时通讯软件,是每一个上网用户都需要的工具,它除了能够让您迅速地在网上找到自己的朋友和伙伴之外,还可以实时交谈和传递信息,截止到目前,全球约有近3亿多人使用即时软件,正因为即时通讯软件拥有数以亿计的用户和增长的市场,所以各个公司都盯上了这个最大的市场,一时间,即时通讯市场硝烟四起。 对等网络(peer-to-peer,简称P2P),应用最初出现时和现在并不相同。事实上可以认为它是若干不同技术以及流行趋势相结合的产物。以下是导致P2P技术发展最重要的趋势:首先,一些新技术与软件工程的结合,形成了一种将工作分散的趋势。P2P计算正是这种分散工作趋势的结果。其次,在企业应用集成等因素的驱动下,过去十年渐渐形成从集中的单机系统转向分布式系统。然而随着互联网的发展,全面的分布式计算也就成为一种迫切需求。 关键词:局域网聊天 P2P java

Abstract With the development of the Internet,the chat tool as a communication tool, has been popularly accepted by netizens of all ages. At present, there are many powerful chat tools, of which Tencent QQ, MSN-Messager are much more prevalent. Instant messaging software is necessary for every one who connects to the internet, which can not only provide you a prompt way to find friends and partners online, but can provide you the convenience of internet relay chat and information delivering. Up to now, there are about 300 million people using real-time software all over the world. As more and more corporations have focused on this market with growing potential, which has hundreds of millions of uses, the competitions among these corporations are extremely fierce. The initial application of peer-to-peer network (peer-to-peer, referred to as P2P) is not the same as it is now. In fact, it can be regarded as a combination of different technologies and fashion trends. Below are the most important trends that have led the development of P2P technology: First of all, the integration of software engineering and new technologies led to a working dispersion trend. As a result, P2P computing was born. Then, in the past decade, it has turned fro m a single centralized system to distributed system due to the motivation of factors such as enterprise application integration. At last, with the development of the Internet, however, a comprehensive distributed computing has become an urgent need. Keywords:LAN chat P2P java

java课程设计聊天小程序

java课程设计聊天小程序

课程设计指导书 姓名学 号 班 级 一 班 课程名称Java课程设计课程性质 设计时间2010年11月4日——2010年12月31日设计名称聊天小程序 设计目的本次课程设计是对前面学过的面向对象的编程思想以及编程方法的一个总结、回顾和实践。开始设计前学生一定要先回顾以前所学的内容,明确本次设计所要用到的技术点并到网上搜索以及查阅相关的书籍来搜集资料。通过编写一个基于JA V A的应用系统综合实例,来掌握Java语言编程技巧。 设计要求1、使用图形用户界面。 2、能实现一个聊天室中多人聊天。 3、可以两人私聊。

计划与进度计划在两个月内完成任务,首先在前半个月内(11月4日--11月19日),构思通过网上(图书馆)的知识与课本上的相关内容的了解与认识,确认好选择的课题与怎样设计,基本的思路想好。十五天(11月19日--12月5日)内参考资料争取完成服务端的程序,在12月5日--12月20日完成客户端的程序设计,在12月20日—12月30日内完成实现报告的填写工作。在12月31日全面完成整个课题,并上交给老师。 任课教师意见备注

课程设计报告 课程: 学号: 姓名: 班级 教师: 时间

计算机科学与技术 设计名称:聊天小程序日期:2010 年 11月 4 日 设计内容:设计一个在图形界面下,实现一个聊天室中多人聊天,也可以私聊的聊天小程序 设计目的与要求:目的是为了更好的掌握java 这门课程的内容,同时更好的理解与掌握socket 编程,对所有面向对象的编程思想以及编程方法的一个总结、回顾和实践,掌握Java语言编程技巧。要求使用图形用户界面。能实现一个聊天室中多人聊天。可以两人私聊。(提示:使用socket通信)程序描述清晰准确,思路清晰,程序能够实现相应的功能。

若干个经典的Java小程序源代码

一个Java小程序源代码(反转字符串)//BorderLayoutTest.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; import javax.swing.event.*; public class test1 { public static void main(String[] args) { cloneFrame frame = new cloneFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.show(); } } class cloneFrame extends JFrame { public cloneFrame() {

setTitle("机试程序"); setSize(600, 400); JPanel buttonPanel = new JPanel(); buttonPanel.setBackground(new Color(56,43,85)); Button1 = new JButton("点击复制反转字符串"); Button1.addActionListener(new turnListener()); buttonPanel.add(Button1); JPanel textPanel = new JPanel(); textPanel.setBackground(new Color(100,100,100)); field1 = new JTextField("姓名:老孙;学号:2004132028", 20); field2 = new JTextField("反转", 20); field2.setEditable(false); textPanel.add(field1); textPanel.add(field2); JPanel tuPanel = new JPanel();

JAVA课程设计--简单的网络聊天程序

本科课程设计课程设计题目:简单的网络聊天程序

课程设计报告1.设计目的:

序言 1.1 背景 在当今的信息时代,越来越多的聊天工具被应用,Java语言是当今流行的网络编程语言,它具有面向对象、与平台无关、安全、多线程等特点。使用Java语言不仅可以实现大型企业级的分布式应用系统,还能够为小型的、嵌入式设备进行应用程序的开发。面向对象的开发方法是当今世界最流行的开发方法,它不仅具有更贴近自然的语义,而且有利于软件的维护和继承。为了进一步巩固课堂上所学到的知识,深刻把握Java语言的重要概念及其面向对象的特性,锻炼我们熟练的应用面向对象的思想和设计方法解决实际问题的能力,开设了Java程序设计课程设计。 此次课程设计的题目为简单的聊天室,通过做巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握JDK、JCreator等开发工具的运用,拓宽常用类库的应用。使我们通过该教学环节与手段,把所学课程及相关知识加以融会贯通,全面掌握Java语言的编程思想及面向对象程序设计的方法,为今后从事实际工作打下坚实的基础。 1.2 相关技术 CPU:Pentium 2.8GHz以上 内存:256MB以上 硬盘空间:80G以上 操作系统:Windows7 运行环境:eclips

2. 程序设计与实现 2.1需求分析 Java是一种简单的,面向对象的,分布式的,解释的,键壮的,安全的,结构中立的,可移植的,性能很优异的,多线程的,动态的语言。Java去掉了C++语言的许多功能,如:指针运算、结构、typedefs、#define,让Java的语言功能很精炼,并增加了一些很有用的功能,如自动收集碎片。这将减少平常出错的50%。而且,Java很小,整个解释器只需215K的RAM。 因此运用JAVA程序编写聊天室,实现简单聊天功能。本次课程设计做的是Java简单聊天室,它是图形界面、线程、流与文件等技术的综合应用,其界面主要采用了java.awt包,javax.swing包等。程序实现了聊天室的基本功能,其中有: (1)启动服务器:实现网络的连接,为注册进入聊天室做准备。 (2)启动客户端:实现网络的链接,可以进行正式的聊天 (3)发送信息:为用户发送信息提供平台。 (4)离开界面:使用户退出聊天室。 (5)关闭服务器:断开与网络的连接,彻底退出聊天室。

java聊天工具源代码.doc

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";

利用JAVA实现简单聊天室

利用JAVA实现简单聊天室 1.设计思路 Java是一种简单的,面向对象的,分布式的,解释的,键壮的,安全的,结构中立的,可移植的,性能很优异的,多线程的,动态的语言。而且,Java 很小,整个解释器只需215K的RAM。 因此运用JAVA程序编写聊天室,实现简单聊天功能。程序实现了聊天室的基本功能,其中有: (1)启动服务器:实现网络的连接,为注册进入聊天室做准备。 (2)注册登陆界面:填写基本信息如姓名等,可以供多人进入实现多人聊天功能。 (3)发送信息:为用户发送信息提供平台。 (4)离开界面:使用户退出聊天室。 (5)关闭服务器:断开与网络的连接,彻底退出聊天室。 2.设计方法 在设计简单聊天室时,需要编写5个Java源文件:Server.java、Objecting.java、LogIn.java、ClientUser.java、Client.java。 3 程序功能图及程序相关说明 (1)主功能框图

(2) 聊天室基本功能表 4.程序代码是说明 程序中引入的包: package Chat; import https://www.sodocs.net/doc/e38153575.html,.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.*;

import java.io.*; (1)服务器端代码中用户自定义类: 类名:Server 作用:服务器启动 继承的接口名:ActionListener public class Server implements ActionListener{ 定义的对象: count //记录点机关闭按钮次数2次关闭 soconly //只有SOCKET,用于群发 sockets//所有客户的SOCKET socket_thread //Socket所在的线乘,用于退出;frame // 定义主窗体 panel //定义面板 start,stop //启动和停止按钮 主要成员方法: public void center //定义小程序查看器的位置 public void actionPerformed //定义处理异常机制 定义子类:serverRun,Details 继承的父类名:Thread class serverRun extends Thread //启线乘用于接收连入的Socket class Details extends Thread //具体处理消息的线乘,只管发送消息创建一个ServerSocket 对象,用于接受指定端口客户端的信息 ServerSocket server = new ServerSocket("1234"); 接受请求时候,通过accept()方法,得到一个socket对象。 Socket socket = server.accept(); 通过socket创建流(输入,输出)。 BufferedReaderbr=newBufferedReader(newInputStreamReader (socket.getInputStream())) DataInputStream dis = new DataInputStream(socket.getInputStream());

《Java聊天程序的设计与实现》

本科生毕业论文(设计)系(院)计算机科学学院专业计算机科学与技术 论文题目Java聊天程序的设计与实现 学生姓名车永华 指导教师苏炳均(副教授) (姓名及职称) 班级08级ACCP2班 学号08339311 完成日期:二0一一年十一月

Java聊天程序的设计与实现 车永华 计算机科学学院计算机科学与技术08339311 [摘要]:随着信息时代的来临,人们之间的交流也越来越趋向于网络。因此各种聊天工具的使用也是非常频繁,如MSN、QQ之类的聊天工具也被广泛使用。本文在研究局域网通信机制的原理和计算机网络编程基本原理的基础上,使用Java作为开发工具,开发出了一款在局域网中进行通信交流的软件。 [关键字]:Java 服务器端客户端数据传输 引言 当今主流的聊天工具有QQ,MSN,网易泡泡等,国内最热门的聊天工具当属腾讯QQ,是由深圳市腾讯计算机系统公司开发的,基于Internet的即时寻呼软件。你可以通过QQ和你的亲朋好友进行交流,即时收发消息,文件传输,语音视频,发送邮件等功能,QQ不仅仅在电脑在应用,还能通过移动电话登录手机腾讯网址或者下载手机可用的手机客户端进行QQ的登录使用。QQ支持显示好友的在线信息,即时传送信息、即时交谈、即时发送文件和网址。QQ可以在Win95/98/NT/2000/XP/Win7操作系统下运行,是十分灵活的网络通信工具。 虽然QQ软件是免费的,而且功能也是越来越强大。但是唯一的不足的地方就是都需要在电脑联网的情况下才能使用,脱离了Internet根本就是一个只能看不能用的软件,为了能在脱离了Internet的情况下使用的局域网聊天工具,那就必须要有服务器端,而本系统就是包括服务器端和客户端,可以在局域网聊天的一个软件。 1 开发工具概述 1.1什么是Java Java是一种可以跨平台应用的面向对象的程序设计语言,他是由Sun公司在

java实现聊天系统(计算机网络课程设计报告)

计算机网络课程设计报告 学生姓名 学号 班级 指导教师 设计时间

目录 第一章系统描述 设计目的 (3) 系统设计任务 (3) 系统设计分析 (3) 系统功能分析 (4) 第二章功能模块结构 模块划分 (5) 模块结构图 (5) 模块功能 (5) 第三章模块算法实现 服务器实现 (6) 客户端实现 (9) 第四章运行结果 (13) 第五章课程设计总结 (17) 第六章附录 参考文献 (19) 源代码 (19)

第一章系统描述 设计目的 1.学习网络编程的知识,掌握网络编程的方法。 2.进一步掌握编程思想与编程技巧,做到模块化程序设计, 3. 强化语言学习,尤其是Java的图形界面与多线程,需反复练习,熟练掌握。 系统设计任务 聊天室软件的设计与开发:基本要求可以完成群聊、私人聊天,实时发送和显示聊天信息,完成好友列表;进一步要求带表情,附件发送,聊天信息的加密传送,设置黑名单等。 学习通信编程Socket接口编程,使用TCP或UDP接口完成信息传送,利用多线程技术实现服务器端的多个TCP连接的建立。 系统设计分析 一.实现网络聊天室编程,关键在于Socket通信,程序的功能都是在Socket的基础上一层一层增加的。实现Socket通信的基本方法为以下4个步骤。 在客户端与服务器端创建相应的ServerSockot/Socket实例。 打开连接到Socket的输入输出流 利用输入输出流,按照一定的协议(TCP协议)对Socket进行读写操作 关闭输入输出流和Socket 我们要实现的功能都是在第3步对Socket的输入输出流做相应的操作 二.因为是多客户端,所以必须用线程进行控制,不同的处理线程为不同的客户服务,主线程只负责循环等待,处理线程负责网络连接,接受客户输入的信息,再做相应的处理。 系统功能分析

Java swing实现简单的聊天室可发信息传文件

大家好,今天给大家演示一下如何用Java swing实现一个简单的聊天室系统,源码已经写好了,这里演示一下怎么导入运行,该系统基于cs架构,即客户端和服务端,采用socket通信方式,该项目可运行在任何Java环境下,jdk版本不限,一般来说网络编程都是大家的弱项,所以此项目可以用来好好学习一下Java关于网络方面的编程知识点。下面我们来看看导入运行步骤。 1.将源码导入到eclipse中(源码有客户端和服务端,必须先启动服务端客户端才可以使用)。 2.服务端导入进来了,现在我们先开启服务端。 3.服务端已开启,接下来导入客户端。 4.发现客户端导入后有个错误,一般是jre和jar包的问题,我们来配置一下,配置了jre后发现错误没有了,接下来我们来运行客户端。客户端运行结果如下: 由于第一次运行,没有账号,所以我们先注册一个账号,点击注册按

钮,注册界面如下图所示: 注册成功后我们用刚注册好的账号登录进去,如下所示: 登录上线后有声音提示,由于要聊天,所以我们还得再注册一个账号,

实现两个人之间的聊天。 再次运行login类,再启动一个程序。此时可以发现,在右侧的在线列表里面多了一个人,选择相应的人就可以聊天了。 我们来试试,下面是一些操作截图(双击右侧的在线好有就可以发文件):

上面是发信息的一些操作,下面我们来看看发文件的操作:

点击是后,文件就开始传送了,如下:

文件传完了,我们打开看看可以不可以,文件传输正常,视频可以播放。好了今天的演示就到这里吧,对这个源码感兴趣的可以加我V:qixinfang002获取源码,备注项目名称哦,适当收取一点搬运费哦!介意的勿扰!此外本人在工作学习过程中还收集整理了大量的经典项目,有需要的可以看看我的博客, 博客地址: Java项目地址:

java聊天工具源代码

源代码 项目QQClientProject: LoguiGui代码: package com.huaxia.qq.mzz.gui; import https://www.sodocs.net/doc/e38153575.html,mon.Message; import https://www.sodocs.net/doc/e38153575.html,mon.MessageService; import https://www.sodocs.net/doc/e38153575.html,er; import https://www.sodocs.net/doc/e38153575.html,.Socket; import javax.swing.JOptionPane; public class LoguiGui extends javax.swing.JFrame { public LoguiGui() { initComponents(); } public Socket connectServer() { Socket s = null; try { s = new Socket("127.0.0.1", 6666); } catch (Exception e) { e.printStackTrace(); } return s; } private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: String name = nameItem.getText(); System.out.println("用户名:" + name); if (name == null || "".equals(name)) { JOptionPane.showMessageDialog(this, "用户名不能为空,请输入", "异常提示", JOptionPane.ERROR_MESSAGE); return; } String pwd = new String(pwdItem.getPassword()); System.out.println("密码:" + pwd); if (pwd.length() == 0) { JOptionPane.showMessageDialog(this, "密码不能为空,请输入", "异常提示", JOptionPane.ERROR_MESSAGE); return;

java聊天程序开题报告

大连大学 本科毕业论文(设计)开题报告 论文题目:JA V A聊天程序的设计与实现学院:信息工程学院 专业、班级:计科113 学生姓名:韩宗秋 指导教师(职称):王明军(讲师) 2015年 3 月 5 日填

毕业论文(设计)开题报告要求 开题报告既是规范本科生毕业论文工作的重要环节,又是完成高质量毕业论文(设计)的有效保证。为了使这项工作规范化和制度化,特制定本要求。 一、选题依据 1.论文(设计)题目及研究领域; 2.论文(设计)工作的理论意义和应用价值; 3.目前研究的概况和发展趋势。 二、论文(设计)研究的内容 1.重点解决的问题; 2.拟开展研究的几个主要方面(论文写作大纲或设计思路); 3.本论文(设计)预期取得的成果。 三、论文(设计)工作安排 1.拟采用的主要研究方法(技术路线或设计参数); 2.论文(设计)进度计划。 四、文献查阅及文献综述 学生应根据所在学院及指导教师的要求阅读一定量的文献资料,并在此基础上通过分析、研究、综合,形成文献综述。必要时应在调研、实验或实习的基础上递交相关的报告。综述或报告作为开题报告的一部分附在后面,要求思路清晰,文理通顺,较全面地反映出本课题的研究背景或前期工作基础。 五、其他要求 1.开题报告应在毕业论文(设计)工作开始后的前四周内完成; 2.开题报告必须经学院教学指导委员会审查通过; 3.开题报告不合格或没有做开题报告的学生,须重做或补做合格后,方能继续论文(设计)工作,否则不允许参加答辩; 4.开题报告通过后,原则上不允许更换论文题目或指导教师; 5.开题报告的内容,要求打印并装订成册(部分专业可根据需要手写在统一纸张上,但封面需按统一格式打印)。

java简单聊天程序实验报告及代码

一、实验内容 实验题目: 1、使用URL访问用户指定网站,获取该网页的HTML代码显示给用户,并能保存至指定文件中。 2、使用ServerSockt,Socket对象实现两个用户之间的端到端聊天。 要求:采用UI界面设计,界面友好。 二、实验过程 (这是实验报告极其重要的内容。要抓住重点,可以从理论和实践两个方面考虑。这部分要写明依据什么知识点以及使用方法进行实验以及实验步骤。不要简单照抄实习指导,更不可写一大堆源代码) 题目1、 1、分析题目,了解URL类及其方法。 2、设计一个模拟浏览器界面,有一个文本框,文本区域,一个搜索按钮,一个保存按钮。 3、在搜索事件里面写获取HTML的代码,在保存你面写将内容保存至文件中。 题目2、 1、分析题目,了解import https://www.sodocs.net/doc/e38153575.html,.*,包下用到的一些类,比如URL, Socket和ServerSocket,以及这些类的方法,根据要实现的功能,进行调用。了解端到端的通讯,以及怎样建立连接。 2、设计界面:服务器界面,客户端界面。 3、写出对内容的读写代码,注意哪部分功能,在什么时候实现,应该写在哪部分。以及怎样通信:如图 三、实验结果 (应先列出测试数据,要写明实验的现象,实验数据的处理等。对于实验结果的表述,一般有三种方法:文字叙述(根据实验目的将实验结果系统化、条理化,用准确的专业术语客观地描述实验现象和结果,要有时间顺序以及各项指标在时间上的关系),图表(用表格或坐标图的方式使实验结果突出、清晰,便于相互比较,尤其适合于分组较多,且各组观察指标

一致的实验,使组间异同一目了然;每一图表应有表目和计量单位,应说明一定的中心问题),屏幕截图(实验结果也可以是屏幕截图,充分表明实验的实际情况)。在实验报告中,可任选其中一种或几种方法并用,以获得最佳效果。) 题目一、 界面与结果截图: 题目2、 服务器端截屏: 客户端截屏:

相关主题