我想通过UDP将数据包从客户端发送到服务器。我面临的问题是,如果最后一个数据包大小小于我们正在读取的字节数组的大小,那么来自先前数据包的冗余数据将被附加到它。我试着只将最后一个数据包的正确部分复制到一个新的字节数组中,然后发送它,但客户端以某种方式发送错误的数据包。请任何人都可以指出我做错了什么。提前致谢。UDP客户端服务器文件传输

Client.java:

class client

{

static int serverPort;

static String filename;

public static void main(String args[]) throws SocketException, IOException

{

int count=0;

int MAX_SIZE = 1048;

DatagramSocket clientSocket = new DatagramSocket();

InetAddress IpAddress = InetAddress.getByName("localhost");

byte[] sendData = new byte[MAX_SIZE];

String filePath = "C:\\in.txt";

File file = new File(filePath);

FileInputStream fis = new FileInputStream(file);

int totLength = 0;

while((count = fis.read(sendData)) != -1) //calculate total length of file

{

totLength += count;

}

System.out.println("Total Length :" + totLength);

int noOfPackets = totLength/MAX_SIZE;

System.out.println("No of packets : " + noOfPackets);

int off = noOfPackets * MAX_SIZE; //calculate offset. it total length of file is 1048 and array size is 1000 den starting position of last packet is 1001. this value is stored in off.

int lastPackLen = totLength - off;

System.out.println("\nLast packet Length : " + lastPackLen);

byte[] lastPack = new byte[lastPackLen-1]; //create new array without redundant information

fis.close();

FileInputStream fis1 = new FileInputStream(file);

//while((count = fis1.read(sendData)) != -1 && (noOfPackets!=0))

while((count = fis1.read(sendData)) != -1)

{

if(noOfPackets<=0)

break;

System.out.println(new String(sendData));

DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IpAddress, 9876);

clientSocket.send(sendPacket);

System.out.println("========");

System.out.println("last pack sent" + sendPacket);

noOfPackets--;

}

//check

System.out.println("\nlast packet\n");

System.out.println(new String(sendData));

lastPack = Arrays.copyOf(sendData, lastPackLen);

System.out.println("\nActual last packet\n");

System.out.println(new String(lastPack));

//send the correct packet now. but this packet is not being send.

DatagramPacket sendPacket1 = new DatagramPacket(lastPack, lastPack.length, IpAddress, 9876);

clientSocket.send(sendPacket1);

System.out.println("last pack sent" + sendPacket1);

}

}

Server.java:

import java.io.*;

import java.net.*;

class server

{

public static void main(String args[]) throws IOException

{

DatagramSocket serverSocket = new DatagramSocket(9876);

byte[] recData = new byte[1024];

int i =0;

FileWriter file = new FileWriter("C:\\Users\\ayushi\\Documents\\Semester 2\\Misc\\setups\\eclipse\\ip_1\\ip_second\\src\\out.txt");

PrintWriter out = new PrintWriter(file);

//BufferedOutputStream bos = new BufferedOutputStream(fos);

while(true)

{

//PrintWriter out = new PrintWriter(file);

DatagramPacket recPacket = new DatagramPacket(recData, recData.length);

serverSocket.receive(recPacket);

String line = new String(recPacket.getData());

System.out.println("\n Data: " + line);

out.println(line);

System.out.println("\nPacket" + ++i + " written to file\n");

out.flush();

}

}

}

udp文件服务器,UDP客户端服务器文件传输相关推荐

  1. linux——客户端服务器文件传输

    实现文件传输并不难,只需用fopen.fread.fwrite.fclose这几个函数对文件操作即可.文本文件就不说了,我们就已下图为例. 我们先来看看这个图片文件里装的是什么,我们以notpad++ ...

  2. java服务器客户端文件,客户端服务器文件传输Java

    这是我使用的方法,它使用套接字的输入和输出流来发送和接收文件,完成后,它将自动重新启动服务器并从客户端重新连接到服务器. 服务器代码: package app.server; import java. ...

  3. 本地 服务器 文件传输,本地服务器文件传输

    本地服务器文件传输 内容精选 换一换 CDM支持周期性自动将新增文件上传到OBS,不需要写代码,也不需要用户频繁手动上传即可使用OBS的海量存储能力进行文件备份.这里以CDM周期性备份FTP的文件到O ...

  4. 云服务器 文件 传输,云服务器文件 传输

    云服务器文件 传输 内容精选 换一换 ISO是一种光盘映像文件,通过特定的压缩方式,将大量的数据文件统一为一个后缀名为iso的映像文件.ISO文件可以理解为从光盘中复制出来的数据文件,所以ISO文件无 ...

  5. 文件传送到服务器的软件,远程服务器文件传输软件

    远程服务器文件传输软件 内容精选 换一换 已成功登录Java性能分析.待安装分析辅助软件的服务器已开启sshd.待安装分析辅助软件的服务器已安装JRE,JRE版本要求为Open JDK 11.Java ...

  6. rtx服务器设置 文件,rtx 服务器 文件传输 配置

    rtx 服务器 文件传输 配置 内容精选 换一换 该任务指导用户使用Loader将数据从HBase导出到SFTP服务器.创建或获取该任务中创建Loader作业的业务用户和密码.确保用户已授权访问作业执 ...

  7. 服务器与客户端的文件传输报告,网络文件传输设计报告.doc

    网络文件传输设计报告 合肥学院 计算机科学与技术系 课程设计报告 2011-2012学年第一学期 课程Java语言程序设计课程设计名称网络文件传输系统专业班级08网络工程(1)班姓名王阳光指导教师金莹 ...

  8. 利用TCP协议完成服务器与客户端之间文件传输

    利用TCP文件传输协议模拟与服务器的文件上传.下载操作,以及进入各种目录和列举当前目录文件状态操作.ls为查看当前目录,cd+目录名进入该目录,cd -则返回上一级目录,dow加文件名则下载文件到本地 ...

  9. Windows网络编程:Winsock实现客户端与服务器文件传输(TCP/IP)

    在<Qt实现客户端与服务器消息发送与文件传输>一文里Jungle用Qt和Qt封装的类实现了客户端与服务器之间的消息发送和文件传输.本文Jungle尝试用Windows编程实现客户端与服务器 ...

最新文章

  1. March Library 版本更新
  2. AppLaunchScreen/Screenshot(启动图/屏幕快照)输出规范
  3. 双向最大匹配算法(含完整代码实现,ui界面)正向最大匹配算法,逆向最大匹配算法
  4. 并发新特性—Executor 框架与线程池
  5. [编写高质量代码:改善java程序的151个建议]建议31-在接口中不要存在实现代码...
  6. MySQL多元复制_MySQL多源复制解决方案
  7. Kubernetes pod滚动升级rolling update的一些例子,截图和命令
  8. AC自动机(写的很乱,仅记录留作自己复习)
  9. 兄弟3150cdn更换硒鼓_耗材知多点:一体式硒鼓及分离式硒鼓
  10. Docker安装Mysql8.0,并配置忽略大小写,一句命令搞定
  11. SQL查询集合合并成字符串
  12. 有关onpropertychange事件
  13. MAPREDUCE原理篇(1)
  14. Python库全家福,基本都齐了
  15. php排斥ajaxsubmit函数,jQuery中的ajaxSubmit详解
  16. 小甲鱼 C语言 帮助社区大妈编写一个打疫苗登记程序
  17. 【四足机器人那些事儿】MiniCheetah中的MPC控制
  18. 毫末追击智能驾驶1000天,对战蔚小理将现胜负手
  19. Bug系列路径规划算法原理介绍(三)——Tangent BUG算法
  20. SQL Sserver 2005 精简版 必须要注意的事情

热门文章

  1. 大数据之_亿级分布式日志管理ELK_工作笔记001_ELK认识介绍
  2. 即时通讯学习笔记001---XMPP了解认知
  3. mxnet 训练--如何生成rec 数据 +自己在本机测试的结果
  4. 总结之《征服C指针》
  5. java中复选框组件_Java Swing JCheckBox:复选框组件
  6. php图像处理缩略图,17.ThinkPHP 扩展库:图像处理--生成缩略图
  7. PHP MySQL学生宿舍管理系统源代码_php高校学生宿舍管理系统
  8. python 面向对象_多态、内置方法、反射
  9. WPF通用窗体模板【2】
  10. python实现简单tftp(基于udp)