关于网络文件传输问题

luomingmao129 2008-04-21 04:01:59
我想在客户端和服务器之间进行文件传输,客户端向服务器端传输没有问题,但从服务器向客户端传输就出问题了。客户端开始是用for循环send,而服务器则用一个线程接收。当服务器接收完之后对文件进行某些处理再传回客户端,这时就出问题了。当客户端发完数据之后就用receive等待。请哪位高手指点一下,不按照我开始说的也行,反正是实现这个功能:客户端传文件给服务器,服务器对该文件做了处理之后再把该文件传回客户端,而且能够允许多个客户端同时进行。谢谢!
...全文
95 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
knowledge_Is_Life 2008-05-01
  • 打赏
  • 举报
回复
这个简单啊,网上搜一下就得到答案了.
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
  • 打赏
  • 举报
回复
只要服务器对每个客户端开一个线程处理就可以。你目前的做法遇到什么问题?

18,363

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧