怎么样在客户端等待服务器端的返回的结果然后处理结果?用Socket通信

ghosthjt 2005-10-26 01:05:55
客户端的流程如下,以客户端向服务器端发出SQL语句并等待查询结果为例:

客户端主线程内:
用户发出查询-->等待结果...(一段时间以后)..->接收到结果->处理结果.

中间的等待结果到接收到结果这个怎么操作到现在没想到好办法。因为主线程要等待结果,却不能采用锁定主线程的等待方式,如果不锁定主线程,就不能方便的实现如下功能:

recordset res;
res=SqlAdapter.Execute("select * from table");//向服务器请求sql查询,(不是直接向sql服务器请求)SqlAdapter里有socket,联接到了服务器.
while(!res.adoEOF)
{
....;
}

各位有什么好的方法和建议欢迎指点。谢谢大家。
...全文
372 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
teli_eurydice 2006-06-28
  • 打赏
  • 举报
回复
我也碰到了,郁闷
ghosthjt 2005-11-14
  • 打赏
  • 举报
回复
直接开个线程,然后用内核事件Event等来线程同步好了
-------------------------------------------------------
这个试过,发现主线程不能用event事件来等,这样会因挂起主线程而导致socket没法接收到onreceive消息
oyljerry 2005-11-05
  • 打赏
  • 举报
回复
直接开个线程,然后用内核事件Event等来线程同步好了
ghosthjt 2005-11-04
  • 打赏
  • 举报
回复
to njchf()
你那种是回调的方式,回调的方式有很多不便,不打算使用。有别的方法吗?
ghosthjt 2005-11-04
  • 打赏
  • 举报
回复
to dingpiao()
是的。你有什么好建议吗?
oknight 2005-11-04
  • 打赏
  • 举报
回复
用异步任务的方式调度。
将每一次查询请求编号,作为一个任务提交给服务器,客户端继续作别的事情,同时通过另外的线程去接收返回的结果。
lifengice0706 2005-11-04
  • 打赏
  • 举报
回复
没太看懂楼主的意思,可以再起一个线程,接收结果,把结果放到一个类似队列的数据结构中,主线程根据队列中是否有数据,去处理结果。当然,处理结果也可以单独一个线程。

如果理解错了,别怪我。
njchf 2005-10-26
  • 打赏
  • 举报
回复
可以使用异步模型来处理啊
有窗口使用WSAAsyncSelect 没有窗口用WSAEventSelect
csdn上搜索一下,介绍这些模型的资料很多

不过要求是windows操作系统,linux下好像只能用select模型
dingpiao 2005-10-26
  • 打赏
  • 举报
回复
是C通过SOCKET把SQL语句发到S,S再把结果通过SOCKET返回给C吗?
ghosthjt 2005-10-26
  • 打赏
  • 举报
回复
具体就是客户端应采用什么样的停等方式。一直想不到好办法..
ghosthjt 2005-10-26
  • 打赏
  • 举报
回复
我想听听具体怎么做,二楼说的太笼统了,能不能细点。。。
lemon_wei 2005-10-26
  • 打赏
  • 举报
回复
做成COM也可以,使用回调函数, 用socket通信也是可行的

18,356

社区成员

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

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