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
大致代码如下
发送方:
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理论上不用出现丢包的现象,所以,可以判断是程序逻辑有问题,请检测程序上否有逻辑错误。