Java大学实用教程论文.docx
- 文档编号:5616471
- 上传时间:2022-12-29
- 格式:DOCX
- 页数:13
- 大小:157.86KB
Java大学实用教程论文.docx
《Java大学实用教程论文.docx》由会员分享,可在线阅读,更多相关《Java大学实用教程论文.docx(13页珍藏版)》请在冰豆网上搜索。
Java大学实用教程论文
《Java大学实用教程》结课论文
hpuchang
题目:
基于socket的简单网络聊天程序设计
专业班级:
学号:
姓名:
指导老师:
日期:
目录
引言*********************************************3
摘要*********************************************3
关键字*******************************************3
1.多客户端聊天程序的设计*************************3
1.1多线程机制:
**************************************************3
1.2界面设计******************************************************3
1.3聊天内容界面设计**********************************************6
2.网络通信接口socket*****************************8
2.1网络通信接口socket:
******************************************8
3.基于流式socket的网络编程基本方法***************9
3.1Client/server通信框架******************************************9
3.2建立socket连接************************************************9
3.3获得输入/输出流**********************************************10
3.4读/写数琚****************************************************10
3.5关闭Socket***************************************************10
4.功能设计***************************************11
4.1客户端功能****************************************************11
4.2服务器端功能**************************************************11
结语********************************************12
参考文献****************************************13
基于socket的简单网络聊天程序设计
引言:
随着全球信息化进程的不断发展,网络也在飞速发展。
出于高效、快速、免费地处理各种事物和工作及通信联系的目的,越来越多的人开始使用网络聊天工具来进行交流,于是,便产生了像腾讯QQ、MSN等这样的一些聊天软件,极大地方便了现代人们的生活。
而基于局域网的实时聊天工具,实际上是互联网实时通信工具的一个小规模版本。
如今广域网一般采用UDP/IP或者TCP/IP协议体系来实现,开发技术虽然已经比较成熟,但仍然是商业机密。
而在局域网内,相对功能比较简单,比较容易实现,对于学生的实践还是有不错的锻炼测试效果。
摘要:
实现一个基于socket的局域网通信java程序。
在局域网没有连通Internet的情况下,局域网内的全部电脑能够通过一个服务器建立的聊天室进行聊天,让用户之间能够进行信息交流,达到信息共享的目的。
基于java的多线程机制和socket流的网络编程是设计并行网络通信程序的一种有效方法,本文用一个客户机/服务器连接通信的实例来说明该方法的具体实现。
关键字:
javasocket局域网聊天工具多线程
1多客户端聊天程序的设计
1.1多线程机制:
编程时如果希望程序中某段代码的多次调用能同时进行,就需要引入线程机制。
Java是具有很好移植性的面向对象编程语言,它内置了多线程机制,可以通过继承类和接口创建多线程来实现多线程任务的分配。
聊天室的服务器就是采用多线程实现,每当一个新的用户连接到服务器时,就实例化一个新的线程来与该客户端通信。
Client类负责维护客户端的相关信息,比如IP地址、聊天室中的用户名、连接端口等,并实现了信息发送的send方法。
1.2界面设计
登陆界面主要是用javaxswing、javaawt和javaawt.event包中的一些函数来编写的一个窗体。
该登陆界面的实现主要用到了2个类,分别为:
publicclassToLand和classLogIn类,其中classLogIn类继承了JFrame类,实现了接口ActionListener,主要函数的代码都是在classLogIn类中实现的,而publicclassToLand类只是创建了一个该类的对象,调用了该类的一个构造方法。
为了使登陆界面更加的漂亮和美观,在编写的过程中,自己还向窗体中添加了2张图片,这样看起来就是得登陆界面更加的美观。
登陆界面类体成员变量如下:
classLogInextendsJFrameimplementsActionListener{
privateJPanelpan;
privateJLabellabelName;
privateJLabellabelPassword;
privateJButtonbutton;
privateJTextFieldtext;
privateJPasswordFieldpassword;
privateJLabellabel;
privateJLabellabelImage;
privateImageIconimageBackground,image;
privateStringstr,str1;
这些成员变量这间的类型及作用,如下:
表4-1登陆界面成员变量介绍
类名
成员名
作用
JPanel
pan
作为中间容器
JLabel
LabelName,labelPassword,label,labelImage
主要是为为做标签以及插入背景图片,和昵称图片
JButton
button
发送按钮
JTextField
text
输入用户名
JPasswordField
password
输入密码
ImageIcon
imageBackground,image
背景图片和昵称图片
登陆按钮的监听函数代码如下所示:
publicvoidactionPerformed(ActionEvente){//登陆按钮监听函数
if(newString(text.getText()).equals("")){//当用户名为空时
JOptionPane.showMessageDialog(null,"用户名不能为空!
");
}
elseif(newString(password.getPassword()).equals("")){//当密码为空时
JOptionPane.showMessageDialog(null,"密码不能为空!
");
}
else
{
if(text.getText().equals("admin")&&newString(password.getPassword()).equals("admin")){//当用户名和密码同时正确时
JOptionPane.showMessageDialog(null,"登陆成功");
dispose();
newMain();
}
else{
JOptionPane.showMessageDialog(null,"密码错误");
password.setText(null);
}
}
}
}
1.3聊天内容界面设计
聊天界面的编写也主要是应用了java中的某些包,聊天窗口中主要包含了昵称,对方的IP地址,文本域,发送语句的地方,以及发送按钮。
界面设计图如下:
类体成员介绍:
publicclassPtoPextendsJFrameimplementsActionListener,Runnable{
JLabellabelOne,labelTwo,labelThree;//标签
JTextFieldtext1,text2,text3;
JTextAreaarea;//聊天区域
JButtonb;//发送按钮
Panelpane1,pane2,pane3;//中间容器
构造方法的代码如下所示:
PtoP(Stringname,Stringip){
setTitle("qq对话框");
setBounds(400,200,400,320);
this.setResizable(false);
pane1=newPanel();
pane2=newPanel();
pane3=newPanel();
labelOne=newJLabel("昵称");
text1=newJTextField(12);
text1.setText(name);
labelTwo=newJLabel("IP");
text2=newJTextField(12);
text2.setText(ip);
text1.setEditable(false);
text2.setEditable(false);
pane1.add(labelOne);
pane1.add(text1);
pane1.add(labelTwo);
pane1.add(text2);
area=newJTextArea(10,30);
area.setEditable(false);
pane2.add(newJScrollPane(area));
labelThree=newJLabel("发送的话");
text3=newJTextField(20);
b=newJButton("发送");
b.addActionListener(this);
pane3.add(labelThree);
pane3.add(text3);
pane3.add(b);
add("North",pane1);
add("Center",pane2);
add("South",pane3);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
validate();
Threadthread=newThread(this);
thread.start();//线程开始运行
}
2网络通信接口socket
2.1网络通信接口socket:
java内置了丰富的网络功能,其中基于socket的通信方式使程序可以像文件I/O一样,通过socket读数据和向socket写数据方便地实现对网络资源的使用。
根据数据格式的不同,java使用了流式socket和数据报式socket。
类型
流式socket
数据报式socket
支持的传输协议
TCP
UDP
通信服务类型
双向的数据流通信服务
双向的数据报通信服务
通信服务特点
面向连接,有序,无差错,无重复,可靠性高,可移植性好
非连接,不保证有序,无差错无重复性,可靠性差,移植性差
流式socket提供面向连接的可靠通信服务,支持TCP协议,可实现不同类型计算机系统之间的相互通信,移植性好,编程效率高,因此,在实际java网络编程中一般采用流式socket。
3基于流式socket的网络编程基本方法
Java中,基于流式socket的网络编程基本方法:
通过serversocket类建立服务器程序。
使用accept()方法介绍客户端程序的访问。
该方法对每个客户端返回一个socket对象,生成一个新线程,建立服务器处理程序。
通过继承thread类或实现runnable接口来生成线程,用以实现服务器对客户端连接的处理,通过socket类建立客户端程序。
3.1Client/server通信框架
Client/server通信模式是现代网络间或计算机间进行通信的基本模式,针对client/server模式进行网络编程时,为了实现并发通信,提高服务器的效率,必须使用线程来负责多个客户端要求的处理。
服务器和多个客户端并发通信的框架如下图
服务器端口
客户机1
客户机n
3.2建立socket连接
首先在服务器端建立一个ServerSocket对象,用以监听客户端的连接请求。
例如:
ServerSocketserver;
Try//在服务器端建立ServerSocket对象时必须进行异常处理
{
ServernewServerSocket(3000);//3000为端口号
}
Catch(Exceptione);
{
System.out.println("Error;"+e.toString());
}
在服务器端调用ServerSocket的accept()方法进行监听。
在一个连接请求收到之前一直阻塞调用线程,当有一个连接请求时,返回请求连接的Socket对象。
Socket=server.accept();
在客户端用Socket的构造方法建立一个Socket对象,来请求建立连接。
Socket的构造方法如下:
Socket(InetAddressaddress,intport)//address表示服务器端的IP地址,port表示数据报通信方式。
Socket(Stringhost,intport)//host表示要连接的主机名
Socket(Stringhost,intport,booleanstream)
3.3获得输入/输出流
建立连接后,就可用Socket类中提供的下列方法获得输入/输出流:
getInputStmam()//使Socket对象获得输入流
getOutputStream()//使Socket对像获得输出流
3.4读/写数琚
获得输入/输出流之后,为了便于读写操作,需要在两个流对象基础上建立易于操作的数据流DataInputStream、Dataoutp或PrintStream。
常用的DatalnputStream的方法如下
Stnngreadline()//读入一行文本
Intreadlnt()//读入一个整数
3.5关闭Socket
在通信结束时,程序应关闭Socket,以断开连接释放系统资源。
在关闭Socket之前,需要先将其对应的输入/输出流关闭,然后再关闭Socket本身
out。
close//关闭输出流
in.dose//关闭输入流
socket.close//关闭Socket
客户/服务器的通信过程可用下图详细描述
通过向Socket中读写数据来与Client端通信
关闭Socket
结束通信
创建Socket对象,向Server端的监听接口发出请求
建立连接建立连接建立连接
关闭ServerSocket对象,结束监听服务
关闭Socket,结束通信
等待来自Client端的服务请求
创建ServerSocket对象,在某端口提供监听服务
向Socket中读写数据来与Client端通信
接收请求,用返回的Socket建立连接
4功能设计
基本的及时聊天软件功能:
申请账号、登录、注销、更改密码、即时通讯、查找添加好友、删除好友等功能。
4.1客户端功能
(1)登录上线。
(2)显示其他在线用户。
(3)更新自己的在线用户列表。
(4)与其他上线用户发起会话(一对一私聊)。
(5)与多名上线用户群聊。
(6)发送和接收文件。
4.2服务器端功能
(1)记录上线用户的信息,将其发送给其他在线用户。
(2)接收用户下线信息,将其发送给其他在线用户。
(3)接收用户群聊信息,将其发送给所有在线用户。
(4)接收用户私聊信息,将其发送给相应的在线用户。
(5)接收用户文件信息,将其发送给相应的在线用户。
系统功能结构图:
聊天软件通信系统
通信列表维护
信息转发
群聊
私聊
接收文件
接收私聊信息
发送私聊信息
显示聊天信息
接收群聊信息
发送群聊信息
文件信息
私聊信息
群聊信息
所有在线用户信息
监听群聊事件
监听私聊事件
删除下线用户信息
显
示
在线用户信息
结语:
随着计算机网络的广泛应用和普及,不同行业,不同类型的企业和单位纷纷组建自己的局域网,局域网聊天程序应运而生,方便了人们之间的通信和信息共享。
本文用java语言重点介绍了利用socket编程技术实现局域网通信。
通过这个方法可以成功实现多个客户端和服务器的通信,同时可以保证一个客户端的连接,通信或者是断开的情况下都不影响其他客户端的正常通信。
参考文献:
【1】耿祥义张跃平《Java大学生实用教程(第3版)》电子工业出版社
【2】莫礼平张兆海《基于Java中流式Socket并行通信的编程实现》《电脑学习》200410
【3】谢希仁《计算机网络(第五版)》电子工业出版社2011.12
【4】蔡燕敏《局域网聊天工具的设计与实现》《现代计算机》2011(15)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 大学 实用教程 论文