udp文件服务器,UDP客户端服务器文件传输
我想通过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客户端服务器文件传输相关推荐
- linux——客户端服务器文件传输
实现文件传输并不难,只需用fopen.fread.fwrite.fclose这几个函数对文件操作即可.文本文件就不说了,我们就已下图为例. 我们先来看看这个图片文件里装的是什么,我们以notpad++ ...
- java服务器客户端文件,客户端服务器文件传输Java
这是我使用的方法,它使用套接字的输入和输出流来发送和接收文件,完成后,它将自动重新启动服务器并从客户端重新连接到服务器. 服务器代码: package app.server; import java. ...
- 本地 服务器 文件传输,本地服务器文件传输
本地服务器文件传输 内容精选 换一换 CDM支持周期性自动将新增文件上传到OBS,不需要写代码,也不需要用户频繁手动上传即可使用OBS的海量存储能力进行文件备份.这里以CDM周期性备份FTP的文件到O ...
- 云服务器 文件 传输,云服务器文件 传输
云服务器文件 传输 内容精选 换一换 ISO是一种光盘映像文件,通过特定的压缩方式,将大量的数据文件统一为一个后缀名为iso的映像文件.ISO文件可以理解为从光盘中复制出来的数据文件,所以ISO文件无 ...
- 文件传送到服务器的软件,远程服务器文件传输软件
远程服务器文件传输软件 内容精选 换一换 已成功登录Java性能分析.待安装分析辅助软件的服务器已开启sshd.待安装分析辅助软件的服务器已安装JRE,JRE版本要求为Open JDK 11.Java ...
- rtx服务器设置 文件,rtx 服务器 文件传输 配置
rtx 服务器 文件传输 配置 内容精选 换一换 该任务指导用户使用Loader将数据从HBase导出到SFTP服务器.创建或获取该任务中创建Loader作业的业务用户和密码.确保用户已授权访问作业执 ...
- 服务器与客户端的文件传输报告,网络文件传输设计报告.doc
网络文件传输设计报告 合肥学院 计算机科学与技术系 课程设计报告 2011-2012学年第一学期 课程Java语言程序设计课程设计名称网络文件传输系统专业班级08网络工程(1)班姓名王阳光指导教师金莹 ...
- 利用TCP协议完成服务器与客户端之间文件传输
利用TCP文件传输协议模拟与服务器的文件上传.下载操作,以及进入各种目录和列举当前目录文件状态操作.ls为查看当前目录,cd+目录名进入该目录,cd -则返回上一级目录,dow加文件名则下载文件到本地 ...
- Windows网络编程:Winsock实现客户端与服务器文件传输(TCP/IP)
在<Qt实现客户端与服务器消息发送与文件传输>一文里Jungle用Qt和Qt封装的类实现了客户端与服务器之间的消息发送和文件传输.本文Jungle尝试用Windows编程实现客户端与服务器 ...
最新文章
- March Library 版本更新
- AppLaunchScreen/Screenshot(启动图/屏幕快照)输出规范
- 双向最大匹配算法(含完整代码实现,ui界面)正向最大匹配算法,逆向最大匹配算法
- 并发新特性—Executor 框架与线程池
- [编写高质量代码:改善java程序的151个建议]建议31-在接口中不要存在实现代码...
- MySQL多元复制_MySQL多源复制解决方案
- Kubernetes pod滚动升级rolling update的一些例子,截图和命令
- AC自动机(写的很乱,仅记录留作自己复习)
- 兄弟3150cdn更换硒鼓_耗材知多点:一体式硒鼓及分离式硒鼓
- Docker安装Mysql8.0,并配置忽略大小写,一句命令搞定
- SQL查询集合合并成字符串
- 有关onpropertychange事件
- MAPREDUCE原理篇(1)
- Python库全家福,基本都齐了
- php排斥ajaxsubmit函数,jQuery中的ajaxSubmit详解
- 小甲鱼 C语言 帮助社区大妈编写一个打疫苗登记程序
- 【四足机器人那些事儿】MiniCheetah中的MPC控制
- 毫末追击智能驾驶1000天,对战蔚小理将现胜负手
- Bug系列路径规划算法原理介绍(三)——Tangent BUG算法
- SQL Sserver 2005 精简版 必须要注意的事情
热门文章
- 大数据之_亿级分布式日志管理ELK_工作笔记001_ELK认识介绍
- 即时通讯学习笔记001---XMPP了解认知
- mxnet 训练--如何生成rec 数据 +自己在本机测试的结果
- 总结之《征服C指针》
- java中复选框组件_Java Swing JCheckBox:复选框组件
- php图像处理缩略图,17.ThinkPHP 扩展库:图像处理--生成缩略图
- PHP MySQL学生宿舍管理系统源代码_php高校学生宿舍管理系统
- python 面向对象_多态、内置方法、反射
- WPF通用窗体模板【2】
- python实现简单tftp(基于udp)