ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:238.92KB ,
资源ID:13553338      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-13553338.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(网络编程课程设计.docx)为本站会员(b****6)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

网络编程课程设计.docx

1、网络编程课程设计课 程 设 计 说 明 书 课程名称: Windows网络编程 设计题目: 基于JAVA网络聊天室设计 学 院: 计算机科学与信息工程学院 专业班级: 网络工程12级 指导教师: 小组成员: 2021年6月网络聊天室摘要: 随着我国经济开展和网络的普及,网络技术也越来越多地被应用于日常工作之中。在程序设计领域,面向对象的编程技术正在逐步代替面向过程的程序设计技术,成为计算机应用设计开发的主流,对于人与人之间通过网络的沟通和交流,聊天室是人们最常见、最直接的交流的方式。本聊天系统以聊天交流为主,为广阔用户提供一个借助网络进行人际交往的平台,也是网络与现实最贴近的实用型应用。本文所

2、介绍的网络聊天系统是基于JAVA应用程序开发设计的,其主要特性是简单、面向对象、分布式、解释执行、平安、体系结构中立、可移植、高性能、多线程以及动态性。关键词:局域网、聊天室、JAVA、Socket、WindowsSocket引言: 目前,基于TCP/IP协议的网络得到了普及和飞速的开展,Windows下的网络程序越来越显得重要。利用TCP/IP协议提供的编程接口Socket(套接字)可以开发出TCP/IP应用程序。正确的使用WindowsSocket,就可使得不同地址下的进程得以在Windows环境下顺利进行各种网络通信,因此研究WinSock更有意义。而基于TCP/IP协议网络环境下的应用

3、程序是通过客户机/效劳器(C/S)作用方式模式在网络(应用)编程界面实现的。本次实验采用java语言设计一个基于C/S模式的TCP网络通讯程序。实现客户端与效劳器端之间的数据传输。根据当前网络的需求,网络聊天越来越受到各种网民所青睐。因此开发网络聊天是相当有必要,而且在网站内增加聊天功能,它不仅可以提高网站的访问量,同时可以留着访客,更重要的是让访客透过聊天室实时的互相交流。而小组成员也都学习过JAVA语言,对网络编程也较有兴趣,为了更好的考验自己对JAVA语言的掌握程度,小组成员一致决定以?基于JAVA的网络聊天室?为课程设计,希望通过这一次能进一步提高我们的网络开发编程的能力。聊天系统不外

4、乎两个方面,效劳器端和客户端。这里简要分析一下两个方面所要完成的任务:效劳器端的任务:1、效劳器端应当建立一个ServerSocket,并且不断进行侦听是否有客户端连接或者断开连接。2、效劳器端应当是一个信息发送中心,所有客户端的信息都传到效劳器端,由效劳器端根据要求分发信息。 客户端的任务:1、与效劳器端建立通信通道,向效劳器端发送信息。2、接收来自效劳器的信息。2.系统开发技术2.1 JAVA网络编程技术JAVA丰富的类库提供了大量的类以满足网络化、多线程、面向对象系统的需要。语言包提供的支持包括字符串处理、多线程处理、数学函数处理等,可以用它简单地实现JAVA程序的运行平台。实用程序包提

5、供的支持包括哈希表、堆栈、可变数组、时间和日期等。输入输出包用统一的流模型来实现所有格式的I/O,包括文件系统、网络、输入低级网络包用于实现Socket编程。抽象图形用户接口包实现了不同平台的计算机的图形用户接口部件, 包括窗口、菜单、滚动条、对话框等,使得JAVA可以移植到不同平台的机器。网络包支持Internet的TCP/IP协议,提供了与Internet的接口。它支持URL连接,WWW的即时访问,并且简化了用户/效劳器模型的程序设计。2.2 Socket套接字 Socket,简称套接字,用于实现网络上客户和效劳器之间的连接。具体的说:一个效劳器应用程序一般侦听一个特定的端口等待客户端的连

6、接请求,当一个连接请求到达时,客户端和服武器端建立一个通信连接,在连接过程中,客户端被分配一个本地端口与一个Socket建立连接,客户端通过写Socket来通知效劳器,以读Socket中的信息,类似的效劳器也获得一个本地端口,它需要一个新的端口号来侦听原始端口上的其他连接请求。效劳器也通过它的本地端口连接一个Socket,通过读写和客户端通信。Socket程序的工作过程:1.建立Socket连接:在通信开始之前由通信双方确认身份,建立一条专用的虚拟连接道。2.数据通信:利用虚拟连接通道传送数据信息进行通信。3.关闭:通信结束时,再将所建的虚拟连接撤除。具体如下: 图1 Socket套接字的建立

7、与连接2.3 TCP三次握手第一次握手:原主机发送一个带有本次连接的序号的请求的一个数据帧第二次握手:目的主机收到请求后,如果同意连接,那么发回一个带有一个本次连接序号和源端机连接序列号确实认。第三此握手:源端机收到含有两次初始序列号的应答后,再向目的主机发送一个带有两次连接的序列号确实认。3.系统总框图与功能分析 图2 聊天系统框架图 图3 系统功能图客户端: 启动连接:默认连接IP为127.0.0.1,端口为1228。 聊天:用户可以给所有人发送信息,并能看到其他用户发送给自己或所有人的消息。 断开连接:与效劳器断开连接,无法发送与接收信息。效劳器端: 启动效劳:绑定套接字,处于等待连接的

8、状态,实时监控网络状态。 侦听客户端:效劳器端套接字一旦监听到客户端套接字的连接请求,它就响应客户端套接字的请求,一旦客户端确认了此描述,连接就建立好了。而效劳器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求 断开连接:与客户端断开连接,无法侦听连接客户端。4.系统模块代码设计与分析客户端:1.用效劳器的IP地址和端口号实例化Socket对象。2.调用connect方法,连接到效劳器上。3.将发送到效劳器的IO流填充到IO对象里,比方BufferedReader/PrintWriter。4.利用Socket提供的getInputStream和getOutputStream方法,通

9、过IO流对象,向效劳器发送数据流。5.通讯完成后,关闭翻开的IO对象和Socket。 效劳器端:1.在效劳器,用一个端口来实例化一个 ServerSocket对象。此时,效劳器就可以这个端口时刻监听从客户端发来的连接请求。2.调用ServerSocket的accept方法,开始监听连接从端口上发来的连接请求。3.利用accept方法返回的客户端的Socket对象,进行读写IO的操作。4.通讯完成后,关闭翻开的流和Socket对象1.ServerUI类:效劳器端界面类,主要负责效劳器端的界面设计2.Server类:此类负责创立绑定到指定效劳器端口号的套接字 ,等待客户端连接3.ListenerC

10、lient类:此类负责侦听客户端发送信息并将信息播送出去4.ClientUI类:客户端界面类,主要负责客户端的界面设计5.ClientThread类:此类创立连接到效劳器端的套接字,读取输入内容并发送客户端界面局部: public ClientUI() super(客户端); /创立ClientUI类的对象 btStart = new JButton(启动连接);/启动连接按钮 btSend = new JButton(发送信息);/发送信息按钮 tfSend = new JTextField(10);/构造一个列数为10的空TextField tfIP = new JTextField(10

11、); tfPost = new JTextField(5); taShow = new JTextArea(); /创立一个空的文本区域 /*创立“启动连接按钮的监听器对象,监听按钮发生的动作; *如果“启动连接按钮被按下,那么将创立的ClientUI的对象作为参数传递给ClientThread类 * */ btStart.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) /构造匿名内部类来实现接口ActionListener server = new ClientThread(C

12、lientUI.this); ); /*创立“发送信息按钮的监听器对象,监听按钮发生的动作; *如果“发送信息按钮被按下,那么将获取用户输入到文本框内的内容 * */ btSend.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) server.sendMsg(tfSend.getText(); tfSend.setText();/设置文本框默认内容为空字符串 ); /*创立窗口监听器,监听窗口的动作 *如果窗口被关闭,那么会弹出确定关闭吗的温馨提示窗口,以便用户选择 *如果用户选

13、择“是,那么关闭窗口 * */ this.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) int a = JOptionPane.showConfirmDialog(null, 确定关闭吗?, 温馨提示, JOptionPane.YES_NO_OPTION); if (a = 1) System.exit(0); / 关闭 );客户端连接局部: public ClientThread(ClientUI ui) /ClientThread类构造函数,接收客户端的界面对象 this.ui

14、= ui; try client = new Socket(127.0.0.1, 1228);/这里设置连接效劳器端的IP的端口 println(连接效劳器成功:端口1228); reader = new BufferedReader(new InputStreamReader( client.getInputStream(); /构造客户端输入流并将字节转换为字符 writer = new PrintWriter(client.getOutputStream(), true); / 如果为 true,那么 println、printf 或 format 方法将刷新输出缓冲区 catch (I

15、OException e) println(连接效劳器失败:端口1228); println(e.toString(); e.printStackTrace(); this.start(); /启动客户端线程4.4效劳器端模块局部代码:效劳器端启动局部: public void run() /线程开启后,执行以下操作 try ss = new ServerSocket(1228); /创立绑定到端口号为1228的效劳器套接字对象 ui.clients=new ArrayList();/构造一个包含指定端口号的连接客户端的列表,启动效劳器 println(启动效劳器成功:端口1228); whi

16、le (true) /如果效劳器启动成功,执行以下操作 println(等待客户端); Socket client = ss.accept(); /创立套接字对象,侦听并接受到此套接字的连接,在连接传入之前一直阻塞 ui.clients.add(client); /如果与客户端套接字连接成功,那么将此客户端套接字添加到列表中 println(连接成功 + client.toString(); /将客户端套接字转换为字符串输出 new ListenerClient(ui, client); /创立效劳器端与客户端的监听器 catch (IOException e) /如果效劳器启动失败,输出相应

17、信息 println(启动效劳器失败:端口1228); println(e.toString(); e.printStackTrace(); 效劳器端侦听局部: public void run() String msg = ; while (true) try reader = new BufferedReader(new InputStreamReader( client.getInputStream(); writer = new PrintWriter(client.getOutputStream(), true); msg = reader.readLine(); sendMsg(ms

18、g); catch (IOException e) println(e.toString(); / e.printStackTrace(); break; if (msg != null & msg.trim() != ) println( + msg); /把信息播送到所有用户 public synchronized void sendMsg(String msg) try for (int i = 0; i ui.clients.size(); i+) Socket client = ui.clients.get(i); writer = new PrintWriter(client.ge

19、tOutputStream(), true); / 如果为 true,那么 println、printf 或 format 方法将刷新输出缓冲区 writer.println(msg); catch (Exception e) println(e.toString(); 1.运行效劳器端,如下图2.运行客户端,如下图3.效劳器启动效劳,如下图4.客户端启动连接,如下图5.客户端与效劳器端会话,如下图6.控制台显示,如下图6. 总结通过本次课程设计对基于JAVA网络聊天室的设计,确实积累和总结了不少的经验,锻炼了我的独立工作和实际动手能力,加深了对计算机网络中socket工作原理及其相互联系的认

20、识,提高了对复杂的综合性实践环节具有分析问题、解决问题、概括总结的实际工作能力,对网络编程工程的开发、设计过程有初步认识。参考文献:1 李凌WinSock 2网络编程实用教程M北京:清华大学出版社,2005.北京:清华大学出版社,2021.3盛华,?Java网络编程实用精解?;机械工业出版社,2021. 4 朱振元,朱承,刘聆,?Java语言及其网络应用?;人民邮电出版社,2006.5 刘永华,于春华,?实用Java网络编程技术?;中国电力出版社,2021.6 李绪成,?JavaEE5实用教程基于WebLogic和Eclipse?;电子工业出版社,2007.本文档局部内容来源于网络,如有内容侵权请告知删除,感谢您的配合!

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2