如何在一个按钮消息处理函数中先send数据、后recv数据?

bazzi2011 2012-07-25 10:31:37
一个服务器与一个客户端用socket相连。我想按标识的数字顺序执行语句,但关键的问题在于消息是一触到底的,所以按钮中的代码会全部执行完毕后再退出。
请问如何在一个按钮消息处理函数中先send数据、后recv数据???创造个线程?但如果是线程的话,并行执行,那么也无法保证执行顺序,因为可能线程中的代码执行的速度跟服务器的传输速度不一样。

到底要怎么办呢?求指教!


//在客户端的一个按钮中,点击按钮,向服务器发送数据
void CClientDlg::OnBotton1()
{
char cSendFile[250], cRecvFile[250];
strcpy(cSendFile, "123456789");

1 send(m_sockClient, (char*)&cSendFile,sizeof(cSendFile), 0);

5 recv(m_sockClient, (char*)&cRecvFile, sizeof(cRecvFile), 0);
6 MessageBox(cRecvFile);

}

void CServerDlg::DataFunc()
{
char cRecvFile[250],cSendFile[250];

while(1)
{
2 recv(m_sockServer,(char*)&cRecvFile, sizeof(cRecvFile), 0);
3 MessageBox(cRecvFile);

strcpy(cSendFile, "abcdefgh"); //改变字符串后向客户端发送过去
4 send(m_sockServer,(char*)&cSendFile, sizeof(cSendFile), 0);
}
}



...全文
87 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
guolaikk 2012-07-25
  • 打赏
  • 举报
回复
我猜楼主的程序应该是阻塞式的,客户端调用recv之后会一直等待服务器端发过来数据,而不是数据没到就返回一个错误。
所以没必要等服务器接收完了再调用recv
guolaikk 2012-07-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
引用 1 楼 的回复:
引用楼主 的回复:
不是有WaitforSingleObject吗


能具体讲讲么? 刚接触socket
[/Quote]

多线程里用WaitforSingleObject不是很常见的吗

再说了,看楼主的代码,这和传输速率什么的没什么关系吧
bazzi2011 2012-07-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
引用楼主 的回复:
不是有WaitforSingleObject吗
[/Quote]

能具体讲讲么? 刚接触socket
guolaikk 2012-07-25
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
但如果是线程的话,并行执行,那么也无法保证执行顺序[/Quote]
不是有WaitforSingleObject吗

18,356

社区成员

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

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