全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
TCP/IP协议分析课程实验 基于多线程的TCP Echo 服务器 系院 :数学与计算机学院 班级 :网络工程1001 姓名 :邱向森 学号 :100511630 时间 :2012-12-41 实验目的:掌握java的多线程的编程方法;熟悉多线程的网络应用程序的编程方法;2 实验任务:在实验1的基础上,修改实验1中所编写的TCP Echo服务器程序,使之成为一个具有多线程工作能力的服务器程序。该服务器能够为每一个请求连接的客户端创建一个线程,为其提供通信服务。3 源代码:UDP客户端:import java.io.*;import .*;public class SimpleUDPClient public static void main(String args) throws Exception /基于系统输入流构造具有缓冲区的字符流对象,用于接收键盘输入 BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in);/构造数据报套接字 DatagramSocket clientSocket = new DatagramSocket(); /准备DatagramPacket对象的地址和数据缓冲区 InetAddress IPAddress = InetAddress.getByName(localhost); byte sendData = new byte1024; byte receiveData = new byte1024; while(true) String sentence = inFromUser.readLine(); /从输入终端接收字符串 sendData = sentence.getBytes(); /将字符串以字节形式保存于字节数组中 /构造发送型DatagramPacket对象 DatagramPacket sendPacket = new DatagramPacket( sendData, sendData.length, IPAddress, 9876); clientSocket.send(sendPacket);/发送数据报 /构造接收型DatagramPacket对象 DatagramPacket receivePacket = new DatagramPacket( receiveData, receiveData.length); clientSocket.receive(receivePacket);/接收UDP协议发送来的数据 /通过接收型DatagramPacket对象缓冲区,构造字符串 String modifiedSentence = new String( receivePacket.getData(),/获得缓冲区的字节数组首地址0,/从缓冲区中第一个要读取的字节相对于首地址的偏移量 receivePacket.getLength() /实际从网络上接收的字节数); System.out.println(FROM SERVER: + modifiedSentence); UDP服务端:import java.io.*;import .*;public class SimpleUDPClient public static void main(String args) throws Exception /基于系统输入流构造具有缓冲区的字符流对象,用于接收键盘输入 BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in);/构造数据报套接字 DatagramSocket clientSocket = new DatagramSocket(); /准备DatagramPacket对象的地址和数据缓冲区 InetAddress IPAddress = InetAddress.getByName(localhost); byte sendData = new byte1024; byte receiveData = new byte1024; while(true) String sentence = inFromUser.readLine(); /从输入终端接收字符串 sendData = sentence.getBytes(); /将字符串以字节形式保存于字节数组中 /构造发送型DatagramPacket对象 DatagramPacket sendPacket = new DatagramPacket( sendData, sendData.length, IPAddress, 9876); clientSocket.send(sendPacket);/发送数据报 /构造接收型DatagramPacket对象 DatagramPacket receivePacket = new DatagramPacket( receiveData, receiveData.length); clientSocket.receive(receivePacket);/接收UDP协议发送来的数据 /通过接收型DatagramPacket对象缓冲区,构造字符串 String modifiedSentence = new String( receivePacket.getData(),/获得缓冲区的字节数组首地址0,/从缓冲区中第一个要读取的字节相对于首地址的偏移量 receivePacket.getLength() /实际从网络上接收的字节数); System.out.println(FROM SERVER: + modifiedSentence); 4 运行结果: 5 思考题:消息从网络到达后,其所包含数据被read()方法或receive()方法返回前,数据存储在一个先进先出(first-in, first-out,FIFO)的接收数据队列中。对于已连接的TCP套接字来说,所有已接收但还未传送的字节都看作是一个连续的字节序列(见第6章)。然而,对于UDP套接字来说,接收到的数据可能来自于不同的发送者。一个UDP套接字所接收的数据存放在一个消息队列中,每个消息都关联了其源地址信息。每次receive()调用只返回一条消息。然而,如果receive()方法在一个缓存区大小为n的DatagramPacket实例中调用,而接收队列中的第一条消息长度大于n,则receive()方法只返回这条消息的前n个字节。超出部分的其他字节都将自动被丢弃,而且对接收程序也没有任何消息丢失的提示!6 实验总结分析:通过这次试验,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 陕西省渭南市临渭区2025-2026学年七年级上学期期末考试英语试卷(含答案)
- 河北省沧州市十二校联考2026届高三上学期一模语文试题(含答案)
- 2025-2026学年上海市浦东新区七年级(上)期末数学试卷(五四学制)(含简略答案)
- 【寒假复习】人教版四年级数学上册《大数的认识》专项训练(含答案)
- 化工企业车间级培训课件
- 飞碟科普教学课件
- 飞机黑匣子科普
- 2026云南昭通绥江县农业农村局招聘城镇公益性岗位工作人员1人岗位表备考考试题库及答案解析
- 飞机知识主题班会课件
- 2026年度济南市历下区所属事业单位公开招聘初级综合类岗位人员备考考试题库及答案解析
- 预防葡萄膜炎复发护理策略
- 民兵伪装与防护课件
- 2025年初级经济师考试卷附答案
- 车辆保证过户协议书
- 2026年劳动合同示范文本
- 2025年《城市公共汽车和电车客运管理规定》知识考试题库及答案解析
- 数字文旅发展的沉浸式体验创新
- 电焊工考试100题(带答案)
- 物业项目运营管理培训
- 掌握生命晶石制作技能初级工作指南
- 雨课堂在线学堂《审美的历程》作业单元考核答案
评论
0/150
提交评论