版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、天津理工大学实验报告学院(系)名称:计算机与通信工程学院姓名刘强学号20126*专业计算机科学与技术(中加)班级教学2班实验项目基于tcp and udp的socket编程课程名称计算机网络课程代码0662016实验时间2015年4月30日 第7、8节实验地点7-215批改意见成绩教师签字: (一) 实验目的:熟悉和掌握socket编程的基本理论和方法。掌握基于tcp和udp的工作原理以及socket编程的一般方法,能够编写简单的网络应用程序。(二)实验环境:软件环境:windows 2000xp / eclipse硬件环境:ibmpc或兼容机局域网、pc机连入internet(三)实验学时:
2、2学时,必做.(4) 实验内容:利用java或c+语言,分别基于tcp和udp编写一个简单的client/server网络应用程序。要求实现客户向服务器传输任意一个字符串,服务器将收到的字符串变换成大写后传回客户。(五)实验要求:每位同学上机编程实验,实验指导教师现场指导。程序可参考附录的程序1、程序2、程序3和程序4(程序中有错误需完善)。在实验报告中要说明socket编程的客户端和服务器端主要步骤、利用java语言用到的主要类及其主要作用、tcp和udp编程的主要差异和特点、你所实现的文件传输的程序代码、实验过程和实验结果。(6) 实验步骤:程序代码:tcp client:package
3、tcpclient;import java.io.bufferedreader;import java.io.dataoutputstream;import java.io.inputstreamreader;import .socket;public class tcpclient private static socket clientsocket;public static void main(string args) throws exception string sentence; / 声明字符串变量用于存储字符串输入和传送string modifiedsentenc
4、e;/ 从服务器得到,并送到用户标准输出system.out.println(请输入要转换的字符串:);clientsocket = new socket(localhost, 8579); / clientsocket为定义的套接字bufferedreader infromuser = new bufferedreader( / 创建infromuser程序的输入流new inputstreamreader(system.in); / 将流连接到标准输入dataoutputstream outtoserver = new dataoutputstream( / dataoutputstrea
5、m包含在java.io.*包中clientsocket.getoutputstream();bufferedreader infromserver = / infromserver 连接套接字的输入流new bufferedreader(new inputstreamreader( / bufferedreader包含在java.io.*包中clientsocket.getinputstream();sentence = infromuser.readline(); / 将用户输入的一行 读入到sentence中outtoserver.writebytes(sentence + n); / o
6、uttoserver程序的输出流modifiedsentence = infromserver.readline();/ 当到达服务器时,他们进入modifiedsentence字符串中system.out.println(from server: + modifiedsentence);/ 将服务器返回来的/ modifiedsentence打印到监视器上clientsocket.close(); / 关闭套接字,tcp连接也随之关闭 tcp server:package tcpserver;import java.io.bufferedreader;import java.io.datao
7、utputstream;import java.io.inputstreamreader;import .serversocket;import .socket;class server private static serversocket welcomesocket;public static void main(string argv) throws exception string clientsentence; / 声明字符串变量用于存储字符串输入和传送string capitalizedsentence; / 从从客户端得到welcomesocket
8、 = new serversocket(8579);/ 创建welcomesocket对象,在8579端口进行监听while (true) socket connectionsocket = welcomesocket.accept();/ 获取从客户端传来的字符bufferedreader infromclient = new bufferedreader(new inputstreamreader( / bufferedreader包含在java.io.*包中connectionsocket.getinputstream();dataoutputstream outtoclient = /
9、 outtoclient程 序的输出流new dataoutputstream(connectionsocket.getoutputstream();clientsentence = infromclient.readline(); / 把用户输入的送入clientsentence中capitalizedsentence = clientsentence.touppercase() + n;/ 将发送行中的小写转换成大写outtoclient.writebytes(capitalizedsentence);执行结果:udp client:package udpclient;import jav
10、a.io.bufferedreader;import java.io.inputstreamreader;import .datagrampacket;import .datagramsocket;import .inetaddress;public class udpclient public static void main(string args) throws exception system.out.println(请输入要转换的字符串:);bufferedreader infromuser = new bufferedreader(n
11、ew inputstreamreader(system.in); / 创建输入流,用于输入字符串datagramsocket clientsocket = new datagramsocket(); / 创建一个datagramsocket 对象inetaddress ipaddress = inetaddress.getbyname(); / 创建一个inetaddressbyte senddata = new byte1024; / 创建字节数组byte receivedata = new byte1024;string sentence = infromuser.rea
12、dline(); / 读取输入的字符senddata = sentence.getbytes(); / 将字符串转化为字节数组datagrampacket sendpacket = new datagrampacket(senddata, / 创建datagrampacket 对象,/ 指定其发送地址和端口号senddata.length, ipaddress, 8876);clientsocket.send(sendpacket); / 调用 socket 对象的 send()方法发送数据datagrampacket receivepacket = new datagrampacket(re
13、ceivedata,receivedata.length); / 创建 datagrampacket 对象, 用于接收数据clientsocket.receive(receivepacket); / / 调用 socket 对象的 receive()方法接收数据string modifiedsentence = new string(receivepacket.getdata();system.out.println(from server: + modifiedsentence);clientsocket.close(); / 关闭客户端socket连接udp server:package
14、udpserver;import .datagrampacket;import .datagramsocket;import .inetaddress;public class udpserver public static void main(string args) throws exception suppresswarnings(resource)datagramsocket serversocket = new datagramsocket(8876);/ 创建一个datagramsocket/ 对象,指定端口为8876byte rec
15、eivedata = new byte1024; / 创建字节数组byte senddata = new byte1024;while (true) datagrampacket receivepacket = new datagrampacket(receivedata, receivedata.length); / 创建一个空datagrampacket对象serversocket.receive(receivepacket); / 使用 receiver 方法接手客户端所发送到数据,/ 如果客户端没有发送数据, 进程阻塞string sentence = new string(recei
16、vepacket.getdata();inetaddress ipaddress = receivepacket.getaddress(); / 获取client端ip地址int port = receivepacket.getport(); / 获取client端端口号string capitalizedsentence = sentence.touppercase(); / 将字符串转化成大写字母senddata = capitalizedsentence.getbytes();datagrampacket sendpacket = new datagrampacket(senddata,/ 创建datagrampacket/ 对象,/ 指定其发送地址和端口号senddata.length, ipaddress, port);serversocket.send(sendpacket); / 调用 socket 对象的 send()方法发送数据 执行结果:实验体会:(1) datagram sockets:数据包socket,一般传输方式为udp(2) stream soc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026事业单位工勤技能-江西-江西政务服务办事员三级(高级工)历年参考题库含答案详解3套试卷
- 2026事业单位工勤技能-江西-江西中式烹调师五级(初级工)历年参考题库含答案详解3套试卷
- 腹膜炎的临床表现及护理
- 2026下半年小学教师资格证考试学科知识与教学能力巩固训练试卷及解析
- 2026年林业类事业编考试培训资料
- 鼻咽癌诊疗指南(2024 版)
- 产时分娩科普文章
- 健康宣教介绍文案
- 2026及未来5年中国垃圾填埋用压实机数据监测研究报告
- 幼儿园消防安全反思活动
- 2026年秋季襄阳东津新区中小学教师公开招聘100人考试参考题库及答案详解
- 2026年甘肃金麟锂电新材料有限公司招聘78人笔试参考题库及答案详解
- 安全生产标准化管理全套资料
- 高压旋喷桩、CFG桩、水泥土搅拌桩、振冲碎石桩计算(2012规范)-PJ
- INS输液治疗实践标准指南解读
- 提高隧道光面爆破炮眼痕迹率
- 烟台市龙口市龙港街道社区工作者考试真题2022
- 肖星老师《财务分析与决策》学习笔记
- JJF 1526-2015石油产品颜色分析仪及比色板校准规范
- GB/T 14566.4-2011爆破片型式与参数第4部分:石墨爆破片
- GB 19295-2003速冻预包装面米食品卫生标准
评论
0/150
提交评论