我来我网
https://5come5.cn
 
您尚未 登录  注册 | 菠菜 | 软件站 | 音乐站 | 邮箱1 | 邮箱2 | 风格选择 | 更多 » 
 

本页主题: [求助]TCP文件传输的问题 显示签名 | 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

海兰



性别: 帅哥 状态: 该用户目前不在线
头衔: 再见了,我的大学
等级: 荣誉会员
家族: 低调一族
发贴: 9006
威望: 3
浮云: 406
在线等级:
注册时间: 2005-10-02
最后登陆: 2013-04-28

5come5帮你背单词 [ fireman /'faiəmən/ n. 消防队员 ]


[求助]TCP文件传输的问题

java使用tcp协议传输文件的时候,读写分别用的DataOutputStream和DataInputStream的writeUTF和readUTF方法,写完后发现只有传.txt格式的没有信息丢失,其他的像MP3,JPG...都不对,收到后读不出来.
请问下这种文件传输有没更好的方法?
顶端 Posted: 2006-12-17 16:05 | [楼 主]
ipod



性别: 帅哥 状态: 该用户目前不在线
等级: 栋梁之材
发贴: 992
威望: 0
浮云: 1452
在线等级:
注册时间: 2006-04-24
最后登陆: 2010-07-07

5come5帮你背单词 [ lend /lend/ vt. 把…借给,贷给,出借 ]


DataInputStream和DataOutputStream应该是用在“格式化的内存输入和输出”,注意:ReadUTF和WriteUTF返回的是 Unicode 字符串(你用的没错~)你也可以设定一个try block 看程序有没有抛出UTFDataFormatException,看看出什么错
另一种方法:可以先创建“FileReader/FileWriter”与指定文件进行连接,再用
“BufferedReader”和“BufferedWriter”对其进行包装用来缓冲读入/输出。最后将其格式化转换成“PrintWriter”作为普通文件读取。

具体能不能成功我也不清楚~ 理论上是这样,你可以试试
顶端 Posted: 2006-12-18 12:22 | [1 楼]
海兰



性别: 帅哥 状态: 该用户目前不在线
头衔: 再见了,我的大学
等级: 荣誉会员
家族: 低调一族
发贴: 9006
威望: 3
浮云: 406
在线等级:
注册时间: 2005-10-02
最后登陆: 2013-04-28

5come5帮你背单词 [ surgeon /'sə:d3ən/ n. 外科医生 ]


Quote:
引用第1楼ipod于2006-12-18 12:22发表的:
DataInputStream和DataOutputStream应该是用在“格式化的内存输入和输出”,注意:ReadUTF和WriteUTF返回的是 Unicode 字符串(你用的没错~)你也可以设定一个try block 看程序有没有抛出UTFDataFormatException,看看出什么错
另一种方法:可以先创建“FileReader/FileWriter”与指定文件进行连接,再用
“BufferedReader”和“BufferedWriter”对其进行包装用来缓冲读入/输出。最后将其格式化转换成“PrintWriter”作为普通文件读取。

具体能不能成功我也不清楚~ 理论上是这样,你可以试试

非常感谢,但是“BufferedReader”和“BufferedWriter”,我一开始就用的这种读取方法,但是更加头疼,这种好像是传标准库的ACSII码,于是导致了文件中若包含了汉字都无法传送....所以后来改用Unicode 传,汉字的问题是解决了,结果发现像MP3,JPG等里面的内容还是有部分没办法传送....我猜想只能用2进制码来传才可以,但是还没API里貌似没找到这种传输方法
顶端 Posted: 2006-12-18 15:47 | [2 楼]
myxxn



性别: 保密 状态: 该用户目前不在线
等级: 人见人爱
发贴: 2234
威望: 0
浮云: 1105
在线等级:
注册时间: 2005-10-04
最后登陆: 2010-10-09

5come5帮你背单词 [ loudspeaker /'laud'spi:kə/ n. 扩音器,喇叭 ]


我想你可以讲数据全部转换成byte后再配合write和writeByte传出去 接收后再重新编码 而不是直接用writeUTF   最近也在搞这个东东   有空多讨论哈


[ 此贴被myxxn在2006-12-19 10:13重新编辑 ]
顶端 Posted: 2006-12-19 10:03 | [3 楼]
海兰



性别: 帅哥 状态: 该用户目前不在线
头衔: 再见了,我的大学
等级: 荣誉会员
家族: 低调一族
发贴: 9006
威望: 3
浮云: 406
在线等级:
注册时间: 2005-10-02
最后登陆: 2013-04-28

5come5帮你背单词 [ great /greit/ a. 大的,巨大的,伟大的,重大的 ]


Quote:
引用第3楼myxxn于2006-12-19 10:03发表的:
我想你可以讲数据全部转换成byte后再配合write和writeByte传出去 接收后再重新编码 而不是直接用writeUTF   最近也在搞这个东东   有空多讨论哈

恩,对的,用文件流打开要传输的文件,就是存在一个BYTE数组里面的.然后再进行发送.但是还是会有信息丢失,不知道是什么原因,后来改用GZIPOutputStream来传又可以了...其他文件类型都可以传,但是仍然没搞懂为什么....
顶端 Posted: 2006-12-19 16:41 | [4 楼]
myxxn



性别: 保密 状态: 该用户目前不在线
等级: 人见人爱
发贴: 2234
威望: 0
浮云: 1105
在线等级:
注册时间: 2005-10-04
最后登陆: 2010-10-09

5come5帮你背单词 [ habitat /'hæbitæt/ n. (动植物的)打招呼,引起注意 ]


Quote:
引用第4楼海兰于2006-12-19 16:41发表的:

恩,对的,用文件流打开要传输的文件,就是存在一个BYTE数组里面的.然后再进行发送.但是还是会有信息丢失,不知道是什么原因,后来改用GZIPOutputStream来传又可以了...其他文件类型都可以传,但是仍然没搞懂为什么....


要不把你那段代码贴上来大家研究下?
顶端 Posted: 2006-12-19 18:40 | [5 楼]
我来我网·5come5 Forum » 程序员之家

Total 0.008994(s) query 5, Time now is:11-23 22:18, Gzip enabled
Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号