socket问题

lang14 2012-10-29 05:37:36
我是想这样实现的
服务器 客户端
send()------> (1) recv()
recv()<--------(2) send()

比如调用方式如下

send();
.....//后面执行的代码
.....

大概是这个意思,服务器发送数据给客户端,客户端接收到数据后返回一条命令给服务器,如何实现服务器端执行recv()之后,在执行send()之后的代码(红色部分),我之前用一个事件event,在send();后面加waitforsingleobject();当recv之后setEvent(),我这样实现的话,会阻塞recv()函数,请问有什么方法可以实现我想要的功能吗?
...全文
116 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Gordon_Freeman 2012-10-29
  • 打赏
  • 举报
回复
如果是异步的话,会收到FD_READ消息的,对这个消息进行处理就可以了。楼主也许过于纠结send,recv之间了,把自己困里面了,想想其他的方式,同样可以达到效果的
winginsky 2012-10-29
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

引用 5 楼 的回复:
明白你的意思:交互?

A B

A发给B,B回应A
A再次回应B B又回应A

只有 A发给B,B回应A
不过A发给B的时候用send,send这个函数下面会有一些代码,我是想B回给A时才执行下面的代码
[/Quote]
你自己定义一套消息,客户端服务器接收到相应消息去处理就可以了。你就不要纠结recv,send神马。
收到神马消息就处理神马消息,就可以达到LZ想要的效果。
lang14 2012-10-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
明白你的意思:交互?

A B

A发给B,B回应A
A再次回应B B又回应A
[/Quote]
只有 A发给B,B回应A
不过A发给B的时候用send,send这个函数下面会有一些代码,我是想B回给A时才执行下面的代码
bsnry 2012-10-29
  • 打赏
  • 举报
回复
明白你的意思:交互?

A B

A发给B,B回应A
A再次回应B B又回应A


lang14 2012-10-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
不理解啊。服务器都是被动的,服务器主动连客户端,是不是他们角色该互换呢?

我之前都用select模型的。代码量比较少。
[/Quote]
可能是我说的不清楚吧,是服务器与客户端之间的通信问题,服务器send之后,就会执行send下面的代码,我是想让客户端收到服务器的send的内容,之后马上回复服务器一条命令,也就是服务器会执行recv函数,我是想让服务器执行recv之后在执行send函数下面的代码
看不见的裂痕 2012-10-29
  • 打赏
  • 举报
回复
不理解啊。服务器都是被动的,服务器主动连客户端,是不是他们角色该互换呢?

我之前都用select模型的。代码量比较少。
lang14 2012-10-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
可以用Winsock2.0提供的异步Socket通信模型
[/Quote]
我就是用异步的啊,只要调用了send之后就执行下面的代码了,我是想recv之后在执行下面的代码
Gordon_Freeman 2012-10-29
  • 打赏
  • 举报
回复
可以用Winsock2.0提供的异步Socket通信模型

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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