UDP协议详情实现二进制文件资料传输(java).doc

UDP协议详情实现二进制文件资料传输(java).doc

ID:55896487

大小:183.00 KB

页数:8页

时间:2020-06-13

UDP协议详情实现二进制文件资料传输(java).doc_第1页
UDP协议详情实现二进制文件资料传输(java).doc_第2页
UDP协议详情实现二进制文件资料传输(java).doc_第3页
UDP协议详情实现二进制文件资料传输(java).doc_第4页
UDP协议详情实现二进制文件资料传输(java).doc_第5页
资源描述:

《UDP协议详情实现二进制文件资料传输(java).doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、1.UDP概念UDP是UserDatagramProtocol的简称,中文名是用户数据包协议,是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETFRFC768是UDP的正式规。2.文件传输流程2.1在此使用UDP协议传送文件的程序中,先在服务器端设定监听端口号(3666),在接收客户端发来的请求之前一直处于阻塞状态;在客户端则从本地读取二进制文件并封装成数据报,并发送到相应的服务器端(ip:127.0.0.1,端口:3666);当服务器端接收到客户端发来的请求后,则对数据进行处理,即读取并保存数据,然

2、后返回操作后的信息到客户端;当客户端接收到服务器端的信息后,则输出服务器端返回的信息,到此时就完成了客户端的请求和服务器端的应答;最后关闭DatagramSocket。3.程序流程图Receive()接收到来自客户端的数据writeFile()Socket()readFile()sendTo()Receive()sendTo()客户端服务器端YN显示返回的信息Close()Socket()数据应答发送文件4.程序部分源码4.1服务器端源码publicclassServerextendsThread{DatagramSocketds=nu

3、ll;DatagramPacketdp=null;Filefile=null;Overridepublicvoidrun(){//TODOAuto-generatedmethodstubtry{//设置端口为3666ds=newDatagramSocket(3666);while(true){byte[]buf=newbyte[1024*64];//用于接收长度为1024的数据包dp=newDatagramPacket(buf,buf.length);//从此套接字接收数据报包,此方法在接收到数据之前处于阻塞状态ds.receive(d

4、p);//保存接收文件,文件名取系统当前时间longtemp=System.currentTimeMillis();this.saveFile(dp,temp+"");//为使反馈过程效果明显,线程休眠2秒后发送回复信息Thread.sleep(2000);Stringmessage="serverhasreceivedit.";DatagramPacketpacket=newDatagramPacket(message.getBytes(),message.length(),InetAddress.getLocalHost(),666

5、6);//发送回复数据包ds.send(packet);}}catch(Exceptione){e.printStackTrace();}}/***保存接收到的文件**paramdp*paramfilePath保存文件所在的路径*throwsIOException*/privatevoidsaveFile(DatagramPacketdp,StringfilePath)throwsIOException{FileOutputStreamfileOutputStream=newFileOutputStream(newFile(filePa

6、th));fileOutputStream.write(dp.getData(),0,dp.getData().length);fileOutputStream.close();}}4.2客户端源码publicclassClient{privateDatagramSocketds=null;privateDatagramPacketdp=null;/***传输文件*paramfilePath文件所在路径*/publicvoidTransmitFile(StringfilePath){try{//从本地读取文件byte[]data=thi

7、s.readFile(filePath);ds=newDatagramSocket(6666);//封装数据报dp=newDatagramPacket(data,(int)data.length,InetAddress.getLocalHost(),3666);//开始传输文件ds.send(dp);//接收从服务器回复的信息byte[]buf=newbyte[1024];dp=newDatagramPacket(buf,buf.length);ds.receive(dp);byte[]server=dp.getData();Syste

8、m.out.println("客户端-->收到服务器返回的信息:"+newString(server,0,dp.getLength()).trim());}catch(Exceptione){e.pri

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。