关于网络文件传输问题

luomingmao129 2008-04-21 04:01:59
我想在客户端和服务器之间进行文件传输,客户端向服务器端传输没有问题,但从服务器向客户端传输就出问题了。客户端开始是用for循环send,而服务器则用一个线程接收。当服务器接收完之后对文件进行某些处理再传回客户端,这时就出问题了。当客户端发完数据之后就用receive等待。请哪位高手指点一下,不按照我开始说的也行,反正是实现这个功能:客户端传文件给服务器,服务器对该文件做了处理之后再把该文件传回客户端,而且能够允许多个客户端同时进行。谢谢!
...全文
57 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
这个简单啊,网上搜一下就得到答案了.
回复
UltraBejing 2008-04-30
我也想知道,正在找這方面的資料~~~~~
回复
cnzdgs 2008-04-21
ret = send(client, buffer, strlen(buffer), 0);
我说的是这行。你是怎么写的?
回复
luomingmao129 2008-04-21
嗯,谢谢。这个问题在上面没写好,在实际中我用的是宏,所以这里就随便用数字代替了,没怎么加以区分,主要问题是,从客户端传文件给服务器正常,但从服务器再传回客户端就不行了。
回复
cnzdgs 2008-04-21
传文件数据别用strlen函数,strlen是取字符串长度,遇到\0就认为字符串结束了。发送数据的长度用fread的返回值来计算。
回复
luomingmao129 2008-04-21
客户端主要代码如下:
pf = fopen("sendfile.txt", "rb");
while(1) // send file
{
fread(buffer, 1, 1024, pf);
ret = send(server, buffer, strlen(buffer), 0);
if(ret == 0)
break;
}
fclose(pf);

pf = fopen("receivefile.txt", "wb");
while(1) // receive file
{
ret = recv(server, buffer, 1024, 0); // 这个地方收不到数据
if(ret == 0)
break;
fwrite(buffer, 1, ret, pf);
}
fclose(pf);

服务器的线程主要代码如下:
while(1)
{
ret = recv(client, buffer, 1024, 0);
if(ret == 0)
break;
fwrite(buffer, 1, ret, pf);
fclose(pf);
...... // 对接收后的文件进行处理之后再发给客户端,但这个时候好象不运行下面的代码了。
pf = fopen("temp.txt", "rb");
while(1)
{
fread(buffer, 1, 1023, pf);
ret = send(client, buffer, strlen(buffer), 0);
if(ret == 0)
break;
}
}
客户端或是服务器端不知道哪个地方不对。
回复
hurryboylqs 2008-04-21
线程
回复
cnzdgs 2008-04-21
只要服务器对每个客户端开一个线程处理就可以。你目前的做法遇到什么问题?
回复
发帖
网络编程
创建于2007-09-28

1.8w+

社区成员

VC/MFC 网络编程
申请成为版主
帖子事件
创建了帖子
2008-04-21 04:01
社区公告
暂无公告