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

合集下载

计算机网络课程设计利用java实现UDP协议

计算机网络课程设计利用java实现UDP协议

计算机网络课程设计利用java实现UDP协议实现UDP协议系别计算机与通信工程学院专业计算机科学与技术学号4110415姓名张振指导教师王聪xx年7月4日1、需求分析程序是如何通过网络进行相互通信的呢?各个孤立的工作站或主机用物理链路相连在一起,组成数据链路,从而达到资源共享和通信的目的,就形成网络。

通信是人与人之间同过某种媒体进行的信息交流与传递。

网络通信一般指网络协议。

当今网络协议有很多,其中基本最常用的就是TCP/IP 协议族。

UDP协议就是属于TCP/IP协议族中的协议。

在网络中它与TCP协议一样用于处理数据包。

在OSI模型中,UDP协议在第四层传输层,处于IP协议的上一层。

与TCP相比,UDP有不提供数据报分组、组装和不能对数据包的排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。

本文利用Java语言网络编程的思想,编写UDP协议程序,实现UDP协议在网络中所要完成的功能。

在Java语言为实现程序的相互通信提供了许多有用的抽象应用程序接口(API, Application Programming Interface),这类应用程序接口被称为套接字(sockets)。

因此,本文UDP协议的编程所需要用到的接口就是套接字。

2、实验环境开发环境: 个人PC+win8、1+myeclipse103、实验原理以及相关内容3、1 UDP简介UDP 是User Datagram Protocol的简称,中文全称是用户数据包协议,是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。

在网络中它与TCP协议一样用于处理数据包。

在OSI模型中,UDP协议在第四层传输层,处于IP协议的上一层。

与TCP相比,UDP有不提供数据报分组、组装和不能对数据包的排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。

UDP用来支持那些需要在计算机之间传输数据的网络应用。

包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。

计算机网络课程设计利用java实现UDP协议

计算机网络课程设计利用java实现UDP协议

文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.计算机网络课程设计利用java 实现UDP协议2014年7月4日1.需求分析程序是如何通过网络进行相互通信的呢?各个孤立的工作站或主机用物理链路相连在一起,组成数据链路,从而达到资源共享和通信的目的,就形成网络。

通信是人与人之间同过某种媒体进行的信息交流与传递。

网络通信一般指网络协议。

当今网络协议有很多,其中基本最常用的就是TCP/IP 协议族。

UDP 协议就是属于TCP/IP协议族中的协议。

在网络中它与TCP协议一样用于处理数据包。

在OSI模型中,UDP协议在第四层——传输层,处于IP协议的上一层。

与TCP相比,UDP有不提供数据报分组、组装和不能对数据包的排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。

本文利用Java语言网络编程的思想,编写UDP协议程序,实现UDP协议在网络中所要完成的功能。

在Java语言为实现程序的相互通信提供了许多有用的抽象应用程序接口(API,Application Programming Interface),这类应用程序接口被称为套接字(sockets)。

因此,本文UDP协议的编程所需要用到的接口就是套接字。

2.实验环境开发环境: 个人PC+win8.1+myeclipse 103.实验原理以及相关内容3.1 UDP简介UDP 是User Datagram Protocol的简称,中文全称是用户数据包协议,是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。

在网络中它与TCP 协议一样用于处理数据包。

在OSI模型中,UDP协议在第四层——传输层,处于IP协议的上一层。

与TCP相比,UDP有不提供数据报分组、组装和不能对数据包的排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。

UDP用来支持那些需要在计算机之间传输数据的网络应用。

包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。

java网络聊天软件课程设计

java网络聊天软件课程设计

《面向对象程序设计课程设计》报告基于C/S结构的网络聊天室姓名:学院:信息技术学院专业:班级:学号:Eastern Liaoning University目录目录 (1)一、需求分析 (2)二、系统设计 (3)1、服务器端功能 (3)2、客户端功能 (3)3、通讯流程 (4)三、系统实现 (5)(一)总体设计 (5)1.服务器端设计 (5)2.客户端设计 (5)(二)代码思路 (6)1.定义服务端类Serverly继承Frame类 (6)2.定义Cliently类继承Frame类 (6)四.具体设计 (8)五、系统测试 (12)六、总结 (13)一、需求分析电信服务离不开网络编程,资料的传输离不开网络编程,还有很多很多,人们的生活已经离不开网络。

为了能迎合人们的需要,本小组决定利用java stocker编程开发一种可以在多操作系统中运行的聊天室软件,以满足人们业余生活的需要。

本软件采用Client/Server结构,将聊天系统划分为两个子系统:客户端子系统,服务器端子系统。

网络编程中有两个主要的问题,一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输。

目前较为流行的网络编程模型是客户机/服务器结构。

即通信双方一方作为服务器等待客户提出请求并予以响应。

客户则在需要服务时向服务器提出申请。

服务器一般作为守护进程始终运行,监听网络端口,一旦有客户请求,就会启动一个服务进程来响应该客户,同时自己继续监听服务端口,使后来的客户也能及时得到服务。

因此,本项目即设计一个网络聊天程序,并根据这个程序说明TCP连接的建立,套接字Socket的使用,以及端口等问题,实现基于C/S模式的聊天室程序。

聊天室共分为服务器端和客户端两部分,服务器端程序主要负责侦听客户端发来的消息,客户端需要登录到服务器端才可以实现正常的聊天功能。

二、系统设计1、服务器端功能◆在特定端口上进行侦听,等待客户端连接。

基于UDP协议的网上聊天程序范例

基于UDP协议的网上聊天程序范例

湖南工业大学课程设计资料袋计算机与通信学院学院(系、部)2011 ~ 2012 学年第 1 学期课程名称计算机网络原理指导教师李建设职称副教授学生姓名蒋政专业班级软件092 学号题目基于UDP协议网上聊天程序成绩起止日期2011 年11 月24 日~2011 年12 月4 日目录清单课程设计任务书2010 —2011学年第 2 学期学院(系、部) 计算机与通信学院 专业软件工程 班级 091-3 课程名称: 计算机网络原理 学生姓名: 蒋政 设计题目: 基于UDP 协议网上聊天程序 指导教师: 李建设 完成期限:自 2011 年 11 月 24 日至 2011 年 12 月 4 日 共 2 周内 容 及 任 务一、设计内容实现一简单的聊天程序实现网上聊天,包括服务器和客户端。

1. 支持多人聊天。

2. 客户端具有图形化用户界面。

二、设计任务课程设计说明书(纸质+电子版),内容包括:设计内容、系统分析(包括可行性分析、需求分析等)及功能分析;系统设计(要求画出系统整体功能框图、流程图、并给出相应地关键的代码且对所使用的主要数据结构进行说明等。

)、设计总结(评价/遇到的问题/体会/建议等)、使用说明等。

三、设计要求1. 按功能要求开发系统,能正确运行。

程序代码书写规范,有充足的注释。

2. 课程设计所使用的编程语言任选,但建议使用C 或C++;3. 绿色软件:程序运行不需安装,避免写系统和注册表;进 度 安 排 起止日期工作内容2011-11-24~2011-11-27 选题2011-11-28~2011-11-29 系统分析和设计;2011-11-30~2011-12-3 熟悉软件开发工具、编码系统、系统测试2011-12-04~2011-12-05撰写并提交课程设计说明书 (含电子文档)、源程序等。

主 要 参 考 资 料[1] (美) Larry Peterson 著,薛静锋等译. 《计算机网络:系统方法》 (第4版) ,机械工业出版社,2009[2] (荷) Andrew S.Tanenbaum 著,潘爱民译. 《计算机网络》(第4版),清华大学出版社, 2004 [3] 谢希仁著.《计算机网络》((第5版) ,电子工业出版社, 2008.1 [4] 吴功宜等著.《计算机网络课程设计》,机械工业出版社,2005指导教师(签字): 年 月 日系(教研室)主任(签字):年月日课程设计说明书课程名称:计算机网络原理设计题目:基于UDP协议的聊天程序专业:软件工程班级:092学生姓名: 蒋政学号:指导教师:李建设年月日目录1. 课程设计具体实现过程 (4)2. 具体代码的实现 (8)3.注意事项 (12)4.参考文献 (12)一. 多线程编程聊天程序的具体实现1 创建MFC-EXE 工程,工程名为Chat,Dialog based。

Java基于UDP协议实现简单的聊天室程序

Java基于UDP协议实现简单的聊天室程序

Java基于UDP协议实现简单的聊天室程序最近⽐较闲,⼀直在抽空回顾⼀些Java⽅⾯的技术应⽤。

今天没什么事做,基于UDP协议,写了⼀个⾮常简单的聊天室程序。

现在的⼯作,很少⽤到socket,也算是对Java⽹络编程⽅⾯的⼀个简单回忆。

先看⼀下效果:实现的效果可以说是⾮常⾮常简单,但还是可以简单的看到⼀个实现原理。

“聊天室001”的⽤户,⼩红和⼩绿相互聊了两句,“聊天室002”的⼩⿊⽆⼈理会,在⼀旁寂寞着。

看⼀下代码实现:1、⾸先是消息服务器的实现,功能很简单:•将客户端的信息(进⼊了哪⼀个聊天室等)进⾏登记;•构造UDP协议套接字对象,接受各个客户端发送的消息;•解析消息内容,将聊天信息推送回对应聊天室的各个客户端;package com.tsr.simplechat.receive_server;import java.io.IOException;import .DatagramPacket;import .DatagramSocket;import .SocketException;import java.util.ArrayList;import java.util.HashMap;import com.google.gson.Gson;import com.tsr.simplechat.bean.MessageEntity;import com.tsr.simplechat.client.ChatClient;//聊天服务器public class ChatServer extends Thread {// 程序占⽤端⼝号private static final int PORT = 10000;// 消息接受套接字对象private static DatagramSocket server = null;// 字典对象(Key:聊天室ID,Value:该聊天室下的客户端⽤户集合);private static HashMap<String, ArrayList<ChatClient>> groups = new HashMap<String, ArrayList<ChatClient>>();// 构造器public ChatServer() {try {// 消息接受套接字对象的构造初始化server = new DatagramSocket(PORT);} catch (SocketException e) {e.printStackTrace();}}// 注册聊天室新登录⽤户public static void logInGroup(String groupID, ChatClient client) {// 通过聊天室ID,获取该聊天室的所有在线⽤户ArrayList<ChatClient> clients = groups.get(groupID);if (clients == null) {clients = new ArrayList<ChatClient>();}// 将此次进⼊聊天室的⽤户登记clients.add(client);// 更新聊天室信息groups.put(groupID, clients);}// 循环接收消息@Overridepublic void run() {while (true) {receiveMessage();}}private void receiveMessage() {// UDP数据包byte[] buf = new byte[1024];DatagramPacket packet = new DatagramPacket(buf, buf.length);while (true) {try {// 接受数据包server.receive(packet);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}// 解析数据包,获取聊天信息String content = new String(packet.getData(), 0, packet.getLength()); // 通过第三⽅包解析json数据Gson gson = new Gson();MessageEntity me = gson.fromJson(content, MessageEntity.class); // 解析消息内容,通过聊天室ID,获取该聊天室的所有在线⽤户ArrayList<ChatClient> clients = groups.get(me.getGroupId());// 将接收到的消息推送回该聊天室的各个⽤户for (ChatClient client : clients) {client.pushBackMessage(me);}}}}2、客户端程序,依然很简单:•简单的定义客户端聊天室界⾯。

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

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

工业大学课程设计资料袋计算机与通信学院学院(系、部)2013 ~ 2014 学年第 1 学期课程名称网络协议分析指导教师建设职称副教授学生专业班级网络工程学号题目基于UDP协议网上聊天程序成绩起止日期2013 年11 月25 日~2013 年12 月13 日目录清单56课程设计任务书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 撰写并提交课程设计说明书(含电子文档)、源程序等。

指导教师(签字):年月日系(教研室)主任(签字):年月日课程设计说明书课程名称:网络协议分析设计题目:基于UDP协议网上聊天程序专业:班级:学生: 学号:指导教师:建设2013年12 月13 日目录1 课程设计简介 (4)1.1 课程设计的目的 (4)1.2 课程设计容 (4)2课程设计实现过程 (5)2.1 协议原理 (5)2.2 客户机/服务器模式 (7)2.3 关键技术 (8)2.4 流程图 (10)2.5 系统结构图 (11)2.6 程序调试及界面效果图 (11)2.7 源代码 (15)3设计总结 (22)4参考文献 (23)1 课程设计简介1.1 课程设计的目的开发一个专用于实现两台计算机之间即时通讯的软件,以方便两台或两台以上的计算机之间信息的交流。

计算机网络课程设计利用java实现UDP协议详情

计算机网络课程设计利用java实现UDP协议详情

实用文档计算机网络课程设计利用java 实现UDP协议系别计算机与通信工程学院专业计算机科学与技术学号4110415姓名张振指导教师王聪2014年7月4日1.需求分析程序是如何通过网络进行相互通信的呢?各个孤立的工作站或主机用物理链路相连在一起,组成数据链路,从而达到资源共享和通信的目的,就形成网络。

通信是人与人之间同过某种媒体进行的信息交流与传递。

网络通信一般指网络协议。

当今网络协议有很多,其中基本最常用的就是TCP/IP 协议族。

UDP 协议就是属于TCP/IP协议族中的协议。

在网络中它与TCP协议一样用于处理数据包。

在OSI模型中,UDP协议在第四层——传输层,处于IP协议的上一层。

与TCP 相比,UDP有不提供数据报分组、组装和不能对数据包的排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。

本文利用Java语言网络编程的思想,编写UDP协议程序,实现UDP协议在网络中所要完成的功能。

在Java语言为实现程序的相互通信提供了许多有用的抽象应用程序接口(API, Application Programming Interface),这类应用程序接口被称为套接字(sockets)。

因此,本文UDP协议的编程所需要用到的接口就是套接字。

2.实验环境开发环境: 个人PC+win8.1+myeclipse 103.实验原理以及相关内容3.1 UDP简介UDP 是User Datagram Protocol的简称,中文全称是用户数据包协议,是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。

在网络中它与TCP协议一样用于处理数据包。

在OSI模型中,UDP协议在第四层——传输层,处于IP协议的上一层。

与TCP相比,UDP有不提供数据报分组、组装和不能对数据包的排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。

UDP用来支持那些需要在计算机之间传输数据的网络应用。

java网络通信课程设计

java网络通信课程设计

java网络通信课程设计一、课程目标知识目标:1. 理解网络通信的基本概念,掌握Java网络编程的基本原理;2. 学会使用Java语言实现TCP和UDP协议的网络通信;3. 掌握多线程在网络编程中的应用,能够实现简单的服务器与客户端通信程序;4. 了解网络编程中的安全问题,掌握基本的异常处理和输入输出流操作。

技能目标:1. 能够运用所学知识设计并实现基于TCP/UDP协议的聊天程序;2. 能够运用多线程技术优化网络通信程序,提高程序性能;3. 能够分析网络通信过程中可能出现的异常,并编写相应的异常处理代码;4. 能够运用网络通信知识解决实际问题,具备一定的网络编程能力。

情感态度价值观目标:1. 培养学生对网络编程的兴趣,激发学习主动性和积极性;2. 培养学生的团队协作精神,学会与他人共同解决问题;3. 增强学生的网络安全意识,培养良好的网络道德观念;4. 提高学生的实践能力,培养创新精神和解决问题的能力。

课程性质:本课程为Java网络通信的实践课程,以理论知识为基础,注重实际操作能力的培养。

学生特点:学生具备一定的Java编程基础,对网络通信有一定了解,但实践经验不足。

教学要求:教师应注重理论与实践相结合,引导学生通过实际操作掌握网络编程技能,培养解决问题的能力。

在教学过程中,关注学生的个体差异,提供个性化指导,确保学生能够达到课程目标。

同时,注重培养学生的团队协作能力和创新精神,提高学生的综合素质。

二、教学内容1. 网络通信基本概念:介绍网络通信的基本原理,包括OSI七层模型、TCP/IP协议栈,重点讲解IP、TCP、UDP协议的工作原理。

教材章节:第一章 网络通信基础2. Java网络编程API:讲解Java提供的网络编程相关类和接口,如InetAddress、Socket、ServerSocket、DatagramPacket、DatagramSocket等。

教材章节:第二章 Java网络编程API3. TCP网络编程:通过实例讲解TCP协议下客户端与服务器端的通信过程,包括建立连接、数据传输、关闭连接等。

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

湖南工业大学课程设计资料袋计算机与通信学院学院(系、部)2013 ~ 2014 学年第 1 学期课程名称网络协议分析指导教师李建设职称副教授学生姓名专业班级网络工程学号题目基于UDP协议网上聊天程序成绩起止日期2013 年11 月25 日~2013 年12 月13 日目录清单56课程设计任务书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 撰写并提交课程设计说明书(含电子文档)、源程序等。

指导教师(签字):年月日系(教研室)主任(签字):年月日课程设计说明书课程名称:网络协议分析设计题目:基于UDP协议网上聊天程序专业:班级:学生姓名: 学号:指导教师:李建设2013年12 月13 日目录1 课程设计简介 (4)1.1 课程设计的目的 (4)1.2 课程设计内容 (4)2课程设计实现过程 (5)2.1 协议原理 (5)2.2 客户机/服务器模式 (7)2.3 关键技术 (8)2.4 流程图 (10)2.5 系统结构图 (11)2.6 程序调试及界面效果图 (11)2.7 源代码 (15)3设计总结 (22)4参考文献 (23)1 课程设计简介1.1 课程设计的目的开发一个专用于实现两台计算机之间即时通讯的软件,以方便两台或两台以上的计算机之间信息的交流。

,在连接并通信时,尤其是近程的即时通讯,彻底的脱离了远程的服务器,避免了和远程服务器连接时过多的浪费网络资源。

并且避免了服务器忙或与服务器无法连接时,浪费过多时间用于和服务器建立连接!因此,这个软件是极具适应性和实用性的即时通讯软件!本次课程设计的目的是学习基于UDP协议实现网络聊天程序,已达到学会面向无连接方式的程序设计方法,并理解网络编程中面向无连接的概念。

1.2 课程设计内容1.实现一个基于UDP协议的简单的聊天程序,包括服务器和客户端。

2.支持多人聊天。

3.客户端具有图形化用户界面。

2课程设计实现过程2.1 协议原理UDP协议的全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。

在OSI模型中,在第四层——传输层,处于IP协议的上一层。

UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。

UDP 用来支持那些需要在计算机之间传输数据的网络应用。

包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。

UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天UDP仍然不失为一项非常实用和可行的网络传输层协议。

UDP是OSI参考模型中一种无连接的传输层协议,它主要用于不要求分组顺序到达的传输中,分组传输顺序的检查与排序由应用层完成,提供面向事务的简单不可靠信息传送服务。

UDP 协议基本上是IP协议与上层协议的接口。

UDP协议适用端口分别运行在同一台设备上的多个应用程序。

与所熟知的TCP(传输控制协议)协议一样,UDP协议直接位于IP(网际协议)协议的顶层。

根据OSI(开放系统互连)参考模型,UDP和TCP都属于传输层协议。

UDP协议的主要作用是将网络数据流量压缩成数据包的形式。

一个典型的数据包就是一个二进制数据的传输单位。

每一个数据包的前8个字节用来包含报头信息,剩余字节则用来包含具体的传输数据。

UDP是无连接的,即发送数据之前不需要建立连接(当然发送数据结束时也没有连接可释放)因此减少了开销和发送数据之前的时延。

UDP使用的是尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表。

UDP是面向报文的。

发送方的UDP对应程序交下来的报文,在添加首部后就向下交付给IP层。

UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。

UDP是定义用来在互连网络环境中提供数据报交换的计算机通信的协议。

此协议默认是IP下层协议。

此协议提供了向另一用户程序发送信息的最简便的协议机制,不需要连接确认和保护复制,所以在软件实现上比较简单,需要的内存空间比起TCP相对较小。

UDP包头由4个域组成,其中每个域各占用2个字节。

(1)源端口号(16位):UDP数据包的发送方使用的端口号。

(2)目标端口号(16位):UDP数据包的接收方使用的端口号。

UDP协议使用端口号为不同的应用保留其各自的数据传输通道。

UDP和rap协议正是采用这一机制,实现对同一时刻内多项应用同时发送和接收数据的支持。

(3)数据报长度(16位)。

数据报的长度是指包括报头和数据部分在内的总的字节数。

理论上,包含报头在内的数据包的最大长度为65535字节。

不过,一些实际应用往往会限制数据包的大小,有时会降低到8192字节。

(4)校验值(16位)。

UDP协议使用包头中的校验值来保证数据的安全。

××××××(正文字体要求为宋体,字号为小四,行间距20磅,每段前空2字符)2.2 客户机/服务器模式由于这次课程设计是实现点到点的可靠连接,所以在此使用UDP连接方式。

在这个连接中,双方分为客户和服务器,他们各自的功能不同。

客户机一方,UDP应用程序功能如下:(1)打开通信信道(申请一套接字),并连接到服务器在主机的保留端口,该端口对应服务器的UDP进程。

(2)向服务器发出请求报文,等待接收应答。

(3)从服务器方收到最终应答结果,或在不再请求时关闭信道并终止客户机进程。

服务器一方,UDP应用程序动作如下:(1)打开通信信道(申请一套接字),通知本地主机在某一保留端口接收客户机请求。

(2)等待客户请求到达指定端口。

(3)接收到请求,启动一新进程处理用户请求,同时释放旧进程以响应新的客户请求,一旦服务完成,关闭新进程与客户的通信链路。

(4)继续等待客户机请求。

(5)如果不想响应客户机请求,关闭服务器进程。

2.3 关键技术Socket又称作套接字,它是使用标准Unix文件描述符(file descriptor)和其它程序通讯的方式。

使用send()和recv()让你更好的控制数据传输。

在Java 网络编程中,socket相当于应用程序的港口码头;在计算机网络中,套接字由ip地址和端口号组成,为进程之间通信提供地址。

两个主机进行通信实际上就是两个主机中的应用进程互相通信,应用进程之间的通信又称为端到端的通信。

为应用进程之间的通信提供运输服务的是运输层的运输协议,运输层需要有两种不同的运输协议,即面向连接的TCP和无连接的UDP。

在Java中,用于实现基于UDP的聊天程序,使用两个重要的类(DatagramSocket类和DatagramPacket类)。

DatagramSocket类表示用来发送和接收数据报包的套接字。

数据报套接字是包投递服务的发送或接收点。

每个在数据报套接字上发送或接收的包都是单独编址和路由的。

从一台机器发送到另一台机器的多个包可能选择不同的路由,也可能按不同的顺序到达。

在DatagramSocket上总是启用UDP广播发送。

为了接收广播包,应该将DatagramSocket绑定到通配符地址。

在某些实现中,将DatagramSocket绑定到一个更加具体的地址时广播包也可以被接收。

DatagramPacket类表示数据报包。

数据报包用来实现无连接包投递服务。

每条报文仅根据该包中包含的信息从一台机器路由到另一台机器。

从一台机器发送到另一台机器的多个包可能选择不同的路由,也可能按不同的顺序到达。

不对包投递做出保证。

服务程序工作在服务器的某个端口上,一旦启动服务,它将在这个端口上监听,等待客户程序发来请求,当有客户连接到该端口,accept()方法就返回一个Socket对象,可以用该对象获得一个输入输出流。

服务器的套接字用服务器套接字类(ServerSocket)来建立。

具体实现如下:(1)建立一个服务者,端口为6666。

(2)服务者永远等待,一旦客户送来正确的请求,连接至该端口,accept()方法就返回一个Socket对象。

(3)用返回的Socket对象创建数据输入流类的实例6666。

用返回的Socket 对象创建数据输出流的实例8888。

以上实例in和out是服务者用于从客户接受输入信息和向客户程序发送信息所用。

此外,还需要用方法receive()和printIn()读取或输出一行数据。

(4)在客户端建立Socket对象,并进行异常处理,主机名和端口号与连接的服务器名和提供该服务的服务程序的监听端口必须一致。

建立连接后用Socket 类提供的Datagramsocket()和Datagrampacket()方法取得输入输出流。

在服务器端,获得的输入流是客户端的输出流,而Socket获得的输出流是发向客户端的输入流,在客户端也是这样。

获得socket的输入输出流之后,为了便于读写操作,需要在这两个流对象基础上建立易于操作的数据流Datagramsocket, Datagrampacket。

然后对输入输出流进行读写操作。

在通信结束时关闭socket,以断开连接,释放资源。

先关闭对应的输入输出流,再关闭socket本身。

2.4 流程图服务器端客户端2.5 系统结构图2.6 程序调试及界面效果图2.6.1 调试前的准备安装jdk1.6.0并在计算机的环境变量中配置好java环境。

使用的实验环境是Windows XP,Eclipse 6.0,。

使用3太主机进行通信,一台作为服务器,另外两台作为客户端。

相关文档
最新文档