java socket局域网传输文件丢包严重

来源:百度知道 编辑:UC知道 时间:2024/09/26 10:47:06
想实现最简单的文件传输,自己传给自己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( (re

这方面的 我也做过,建议用DataInputStream 做底层,然后用其他高级流,做装饰,这样穿不会丢失,我以前也做了一个如果要源代码,给我留言,不会丢失文件的

丢失包?

面向连接的网络通信 一般不会丢失包吧。

问题表现在哪些方面

最关键的你的buffer的定义呢???怎么不给我们拿出来?你怎么用长度65535这么极限啊??况且不要用PrintStream,该类不会抛出IOException,有问题你有时候是看不出来的。
还有,你的问题很乱啊,发送和接收是要一一对应的,你看看对应了没?

LZ 我也遇到了这个问题 有的时候完整接收 有的时候就不行 723208047 能帮忙看下么

  UDP协议,回出现丢包。
  TCP协议,不会出现丢包。
  java socket局域网传输文件的底层是属于TCP协议,TCP理论上不用出现丢包的现象,所以,可以判断是程序逻辑有问题,请检测程序上否有逻辑错误。