客户端向服务器发送文件,用的是TCP协议,允许同时发送多个文件
客户端代码大致是这样:POSITION pos = dlg.GetStartPosition();
while(pos )
{
m_strPath = dlg.GetNextPathName(pos);
CFile file(m_strPath, CFile::modeRead);
//发送文件头给服务器
//-------------------------------------------(1)
}服务器端在接受到文件头后,发送消息给客户端,客户端发送数据部分给服务器。我的问题是:发送第一个文件时,如何使客户端程序在(1)处暂停一会,等第一个文件发送完毕后,while循环再开始发送第二个文件
客户端代码大致是这样:POSITION pos = dlg.GetStartPosition();
while(pos )
{
m_strPath = dlg.GetNextPathName(pos);
CFile file(m_strPath, CFile::modeRead);
//发送文件头给服务器
//-------------------------------------------(1)
}服务器端在接受到文件头后,发送消息给客户端,客户端发送数据部分给服务器。我的问题是:发送第一个文件时,如何使客户端程序在(1)处暂停一会,等第一个文件发送完毕后,while循环再开始发送第二个文件
解决方案 »
- 请问ComboBox控件问题和按“esc"、"ok"退出问题
- 提个困惑很久的问题
- 在对话框程序动态创建FormView,Button控件不能自绘(DrawItem没有被调用)(我会另开贴加分共300)
- 一个小问题,敲变量名自动辅助出现它可利用的函数等,现在却没了,是在哪儿设置谢谢
- .net安装问题(up用分)
- 对话框不能点击,急
- 请问如何过滤非法字符呢?我在vc里执行Sql语句时,由于我引入输入的变量到Sql里,所以一旦输入的变量中有“'”等符号后,程序就出错了,H
- 刚入门c++,求各位大哥推荐本书
- 100分求助,左右视图的结构,为什么视图尺寸不对应?
- OVERLAPPED结构??
- 请问挡住wm_setcursor不处理直接BREAK;的问题?
- 读取后的shap文件应该如何显示
发送给服务器的时候,应包含文件名和文件长度。
服务器开辟内存,接受数据,最后保存为文件。
发送文件长度有什么作用?检验是否发送成功吗?另:如果我发送多个文件,是一个一个发还是一起发?我上面写的是一个一个发,所以发送第一个时想让while停下来
while(pos )
{
m_strPath = dlg.GetNextPathName(pos);
CFile file(m_strPath, CFile::modeRead);
while(1)
{
if(bStart)
{
//发送文件头
bStart = FALSE;
break;
}
}
}如果这样影响主程序的运行,可以开一个线程来处理,也可以在while(1)里面第一行加个Sleep(0);试试.
SetEvent
WaitForSingleObject
POSITION pos = dlg.GetStartPosition();
while(pos )
{
m_strPath = dlg.GetNextPathName(pos);
CFile file(m_strPath, CFile::modeRead);
WaitForSingleObject(...);
//发送文件头给服务器
}
while(pos )
{
m_strPath = dlg.GetNextPathName(pos);
CFile file(m_strPath, CFile::modeRead);
send(filehead); recv(serverready);
assert(serverready == true); while(1)
{
send(filedata);
}
}