UDP和TCP网络实验报告_第1页
UDP和TCP网络实验报告_第2页
UDP和TCP网络实验报告_第3页
UDP和TCP网络实验报告_第4页
UDP和TCP网络实验报告_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机网络实验报告--TCP/UDP网络通信 班级: 姓名:学号:目录1:实验题目:基于UDP/TCP的通信程序开发22:实验目的:23.实验报告内容:23.1UDP通信程序2接收端:3发送端:4实验结果:53.2UDP群聊程序:5群聊源代码5实验结果:83.3TCP通信8效劳端8客户端10实验结果114实验总结121:实验题目:基于UDP/TCP的通信程序开发2:实验目的:开发TCP\UDP协议应用程序,掌握网络应用程序的工作原理。通过本实验,深入理解TCP和UDP协议的异同点,了解网络协议的工作过程,学会网络通讯编程的根本方法,能够编制网络应用程序。3.实验报告内容:3.1UDP通信程序3.1.1接收端:package.udp;importjava.io.IOException;import.DatagramPacket;import.DatagramSocket;import;publicclassUdpReceiveDemo1{/** *@paramargs *@throwsIOException */publicstaticvoidmain(String[]args)throwsIOException{ System.out.println("UDP接收端开启:"); DatagramSocketds=newDatagramSocket(10000);byte[]buf=newbyte[1024]; DatagramPacketdp=newDatagramPacket(buf,buf.length); ds.receive(dp); Stringip=dp.getAddress().getHostAddress();intport=dp.getPort();byte[]data=dp.getData(); Stringtext=newString(data,0,dp.getLength()); System.out.println("ip-->"+ip+",port-->"+port+",text-->"+text); ds.close(); }}3.1.2发送端:package.udp;importjava.io.IOException;import.DatagramPacket;import.DatagramSocket;import.InetAddress;publicclassUdpSendDemo1{/** *@paramargs *@throwsIOException */publicstaticvoidmain(String[]args)throwsIOException{/** *需求:通过UDP发送一段信息给指定主机 */ System.out.println("UDP发送端开启:"); DatagramSocketds=newDatagramSocket(); Stringstr="Hi,我是通过UDP发过来的";byte[]buf=str.getBytes(); DatagramPacketdp=newDatagramPacket(buf,buf.length,InetAddress.getByName("8"),10000); ds.send(dp); ds.close(); }}3.1.3实验结果:3.2UDP群聊程序:UDP群聊源代码package.udp;importjava.io.BufferedReader;import;import;importjava.io.InputStreamReader;import.DatagramPacket;import;import.InetAddress;import.SocketException;publicclassUdpChatDemo1{/** *@paramargs *@throwsSocketException */publicstaticvoidmain(String[]args)throwsSocketException{/** *群聊程序多线程:一线程负责收,一负责发定义两个线程任务 *///1.创立接收端和发送端DatagramSocketsend=newDatagramSocket(1200);DatagramSocketrece=newDatagramSocket(10000);newThread(newSend(send)).start();newThread(newRece(rece)).start(); }publicstaticclassSendimplementsRunnable{privateDatagramSocketds;publicSend(DatagramSocketds){super();this.ds=ds; }publicvoidrun(){try{ BufferedReaderreader=newBufferedReader(newInputStreamReader(System.in)); Stringline=null;while((line=reader.readLine())!=null){if("over".equals(line))break;byte[]buf=line.getBytes(); DatagramPacketdp=newDatagramPacket(buf,buf.length, InetAddress.getByName("8"),10000);ds.send(dp); }ds.close(); }catch(Exceptione){//TODO:handleexception } } }publicstaticclassReceimplementsRunnable{privateDatagramSocketds;publicRece(DatagramSocketds){super();this.ds=ds; }publicvoidrun(){try{byte[]buf=newbyte[1024];while(true){ DatagramPacketdp=newDatagramPacket(buf,buf.length);ds.receive(dp); Stringip=dp.getAddress().getHostAddress(); Stringtext=newString(dp.getData());if("over".equals(text)){ System.out.println(ip+"...离开了"); } System.out.println(ip+":"+text); } }catch(Exceptione){//TODO:handleexception } } }}实验结果:3.3TCP通信3.3.1效劳端package.TCP;importjava.io.IOException;importjava.io.InputStream;import.ServerSocket;import.Socket;publicclassServerDemo1{/** *创立一个效劳端,已接受数据 *@paramargs *@throwsIOException */publicstaticvoidmain(String[]args)throwsIOException{ System.out.println("效劳端启动啦");//1.创立socket效劳端对象,并监听一个端口 ServerSocketss=newServerSocket(10000);//2.获取客户端对象,和指定的客户度进行通信 Sockets=ss.accept();//获取客户端IP Stringip=s.getInetAddress().getHostAddress(); System.out.println("ip--"+ip+"connected");//3.有了socket就可以获取其中的流 InputStreamin=s.getInputStream();byte[]buf=newbyte[1024];intlen=buf.length; Stringtext=newString(buf,0,len); System.out.println(text);//关闭资源,先关闭客户端 s.close(); ss.close();//关闭效劳端 }}客户端package.TCP;importjava.io.IOException;importjava.io.OutputStream;import.Socket;import.UnknownHostException;publicclassClientDemo1{/** *定义一个TCP的客户端 *@paramargs *@throwsIOException *@throwsUnknownHostException */publicstaticvoidmain(String[]args)throwsUnknownHostException,IOException{ System.out.println("客户端启动啦");//1.创立TCP客户端对象,必须要有socket效劳//客户端通常已建立,就需要连接。因为这是面向连接的协议 Sockets=newSocket("8",10000);//2.连接一旦建立就形成了数据传输通道,这个通道就是IO流,这个IO流由socket建立//所以称之为SocketIO流。 OutputStreamout=s.getOutputStream();//3使用输出流对象将数据写入 out.write("我是通过TCP传过来的".getBytes());//4关闭资源 s.close(); }}实验结果4实验总结TCP与UDP的区别主要表达在以下几点:1.基于连接与无连接2.对系统资源的要求〔TCP较多,UDP少〕3.UDP程序结构较简单4.流模式与数据报模式5.TCP保证数据正确性,UDP可能丢包6.TCP保证数据顺序,UDP不保证

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论