java socket局域网传输文件丢包严重
想实现最简单的文件传输,自己传给自己2G的文件也没什么问题。但是在局域网里传输就丢包严重,几k的文件都不能传好大致代码如下发送方:skt=newSocket(ip,por...
想实现最简单的文件传输,自己传给自己2G的文件也没什么问题。但是在局域网里传输就丢包严重,几k的文件都不能传好
大致代码如下
发送方:
skt = new Socket(ip, port);
printStream = new PrintStream(skt.getOutputStream());
while( (readCount = fileReader.read(buffer, 0, 65535)) != -1 )
printStream.write(buffer, 0, readCount);
接收方:
fileReader = new BufferedInputStream(clientSkt.getInputStream());
fileWrtier = new BufferedOutputStream( new FileOutputStream(path) );
while( (readCount = fileReader.read(buffer, 0, 65535)) != -1 )
fileWriter.write(buffer, 0, readCount);
skt = new Socket(ip, port);
printStream = new PrintStream(skt.getOutputStream());
while( (readCount = fileReader.read(buffer, 0, 65535)) != -1 )
printStream.write(buffer, 0, readCount);
接收方:
fileReader = new BufferedInputStream(clientSkt.getInputStream());
fileWrtier = new BufferedOutputStream( new FileOutputStream(path) );
while( (readCount = fileReader.read(buffer, 0, 65535)) != -1 )
fileWriter.write(buffer, 0, readCount);
不知道问题出在哪里,或者有什么更好的解决方法呢?
谢谢 展开
大致代码如下
发送方:
skt = new Socket(ip, port);
printStream = new PrintStream(skt.getOutputStream());
while( (readCount = fileReader.read(buffer, 0, 65535)) != -1 )
printStream.write(buffer, 0, readCount);
接收方:
fileReader = new BufferedInputStream(clientSkt.getInputStream());
fileWrtier = new BufferedOutputStream( new FileOutputStream(path) );
while( (readCount = fileReader.read(buffer, 0, 65535)) != -1 )
fileWriter.write(buffer, 0, readCount);
skt = new Socket(ip, port);
printStream = new PrintStream(skt.getOutputStream());
while( (readCount = fileReader.read(buffer, 0, 65535)) != -1 )
printStream.write(buffer, 0, readCount);
接收方:
fileReader = new BufferedInputStream(clientSkt.getInputStream());
fileWrtier = new BufferedOutputStream( new FileOutputStream(path) );
while( (readCount = fileReader.read(buffer, 0, 65535)) != -1 )
fileWriter.write(buffer, 0, readCount);
不知道问题出在哪里,或者有什么更好的解决方法呢?
谢谢 展开
6个回答
推荐于2016-08-07
展开全部
UDP协议,回出现丢包。
TCP协议,不会出现丢包。
java socket局域网传输文件的底层是属于TCP协议,TCP理论上不用出现丢包的现象,所以,可以判断是程序逻辑有问题,请检测程序上否有逻辑错误。
TCP协议,不会出现丢包。
java socket局域网传输文件的底层是属于TCP协议,TCP理论上不用出现丢包的现象,所以,可以判断是程序逻辑有问题,请检测程序上否有逻辑错误。
Storm代理
2023-05-30 广告
2023-05-30 广告
StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,IP...
点击进入详情页
本回答由Storm代理提供
展开全部
LZ 我也遇到了这个问题 有的时候完整接收 有的时候就不行 723208047 能帮忙看下么
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
最关键的你的buffer的定义呢???怎么不给我们拿出来?你怎么用长度65535这么极限啊??况且不要用PrintStream,该类不会抛出IOException,有问题你有时候是看不出来的。
还有,你的问题很乱啊,发送和接收是要一一对应的,你看看对应了没?
还有,你的问题很乱啊,发送和接收是要一一对应的,你看看对应了没?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这方面的 我也做过,建议用DataInputStream 做底层,然后用其他高级流,做装饰,这样穿不会丢失,我以前也做了一个如果要源代码,给我留言,不会丢失文件的
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
路过socket不想去看,建议lz研究别的技术。基本没有现实的意义!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询