| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1079 人关注过本帖
标题:TCP的文件传输程序的问题!
只看楼主 加入收藏
trhuang
Rank: 1
等 级:新手上路
帖 子:126
专家分:0
注 册:2007-4-1
收藏
 问题点数:0 回复次数:7 
TCP的文件传输程序的问题!

一个基于TCP的文件传输程序.每次传输的数据不能超过100字节,即超过100字节就将文件分割再发送!
红色字部分不怎么动得实现!

是应该一个一个字节计算到了100然后发送还是有什么别的方法!!!!!

搜索更多相关主题的帖子: TCP 文件 传输 字节 
2007-06-24 18:49
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
.....
我有个问题:TCP本来就是被用来设计成可靠传输的,所以非常适合传输大文件而很少出错。

只有UDP才需要考虑这样的问题。


你可以首先获取文件的长度。
然后再进行判断

淘宝杜琨
2007-06-24 19:06
trhuang
Rank: 1
等 级:新手上路
帖 子:126
专家分:0
注 册:2007-4-1
收藏
得分:0 

没办法啊!作业!我也觉的好郁闷!老是写不切实际的题目!

2007-06-24 22:10
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 

自己先得到文件的总长度,然后再分割成100字节一块的,发过去

不过,分了和没分一样,对方依然是一大串的字节


可惜不是你,陪我到最后
2007-06-24 22:50
trhuang
Rank: 1
等 级:新手上路
帖 子:126
专家分:0
注 册:2007-4-1
收藏
得分:0 

再分割成100字节一块的
就这一点不明白!

2007-06-24 22:57
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
比如说你的文件是12345个字节

你先传1-100个字节

然后再传 101-200字节。这样传啊

可惜不是你,陪我到最后
2007-06-24 22:58
trhuang
Rank: 1
等 级:新手上路
帖 子:126
专家分:0
注 册:2007-4-1
收藏
得分:0 

fis=new FileInputStream("data.txt");
int sum=fis.available();
int i=0;
while(i<sum){
if((sum-i) >100){
byte s[]=new byte[100];
fis.read(s,0,100);
String str=new String(s);
System.out.println(str);
}
else
{
byte s1[]=new byte[100];
fis.read(s1,0,(sum-i));
String str=new String(s1);
System.out.println(str);

}
i+=100;

}

分块那部分我是这样实现的!不知可不可以!

2007-06-25 08:48
trhuang
Rank: 1
等 级:新手上路
帖 子:126
专家分:0
注 册:2007-4-1
收藏
得分:0 

服务端:
public class t10_5_s extends JFrame {
private ServerSocket server;
private Socket sock;
private DataInputStream dis;
private DataOutputStream dos;
private FileInputStream fis;
private PrintWriter pw;

public t10_5_s()
{

try {
server=new ServerSocket(8888);
sock=server.accept() ;
dos=new DataOutputStream (sock.getOutputStream() );
dos.writeUTF( "ok!");
dis=new DataInputStream (sock.getInputStream() );
pw=new PrintWriter (new FileWriter("d1.txt"));
String str=null;
while(true){

str=dis.readUTF();
System.out.println(str);
pw.print(str);

}
} catch (IOException e1) {
e1.printStackTrace();
}finally{
pw.close();
try {
sock.close();
server.close();
} catch (IOException e) {
e.printStackTrace();
}
}

}
public static void main(String[] args) {
new t10_5_s();
}
}
java.io.EOFException
at java.io.DataInputStream.readUnsignedShort(DataInputStream.java:323)
at java.io.DataInputStream.readUTF(DataInputStream.java:572)
at java.io.DataInputStream.readUTF(DataInputStream.java:547)
at t10_5_s.<init>(t10_5_s.java:44)
at t10_5_s.main(t10_5_s.java:65)

客户端:
public class t10_5_c extends JFrame{
private Socket sock;
private DataInputStream dis;
private DataOutputStream dos;
private FileOutputStream fos;
private FileInputStream fis;
public t10_5_c()
{

try {
sock=new Socket("127.0.0.1",8888);
dis=new DataInputStream (sock.getInputStream() );
System.out.println(dis.readUTF());
fis=new FileInputStream("data.txt");
dos=new DataOutputStream(sock.getOutputStream());

int sum=fis.available();
int i=0;
while(i<sum){
if((sum-i) >100){
byte s[]=new byte[100];
fis.read(s,0,100);
String str=new String(s);
System.out.println(str);
dos.writeUTF( str);
}


else
{
byte s1[]=new byte[sum-i];
fis.read(s1,0,(sum-i));
String str=new String(s1);
System.out.println(str);
dos.writeUTF( str);

}
i+=100;

}



} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
finally{try {
sock.close();
} catch (IOException e1) {
// TODO 自动生成 catch 块
e1.printStackTrace();
}}

}

public static void main(String[] args) {
new t10_5_c();
}
}
红色部分是错误!想了好久没搞不懂!

2007-06-25 14:34
快速回复:TCP的文件传输程序的问题!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012552 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved