请教一个关于CAsyncSocket 的问题

hcbj2002 2013-06-24 01:15:36
我把问题简单描述一下,我现在必须要用 CAsyncSocket类给 202.108.33.60 80 端口 发送一个字串"Hello world!",
class CTestSock : public CAsyncSocket;

//begin

CTestSock x;
x.Create();
x.Connect("202.108.33.60",80);
x.Send("hello world",8);

发送总是失败的,我想我是知道原因的,应为CTestSock 是异步的,Connect函数返回了,但是其实没有建立好,立刻发送肯定会失败。如果在Connect之后Sleep(200),结果就是好的。
可是不同的网站这里的Sleep时间应该是不一样的,我想一联结好就立马发出去。不要有多的延时。
我想问一下还有没有简单的一定方式,我不想改CAsyncSocket方式,
能不能在Connect之间将x设成同步函数?
那们高手指点一下。
...全文
64 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wwwspider001 2013-06-25
  • 打赏
  • 举报
回复
Connect这你想同步,那你用CAsyncSocket想在哪异步呢? 如果必须用CAsyncSocket,就像1楼所说重载OnConnect 否则就像2楼所说用CSocket,只要Connect成功,后面就可以直接发送
叶恭介叶恭介 2013-06-24
  • 打赏
  • 举报
回复
接收 CAsyncSocket 连接成功的消息
清水泠泠 2013-06-24
  • 打赏
  • 举报
回复
最近我也在写这个,CAsyncSocket是异步非阻塞的,如果你要用同步的 那就用Csocket类,它的connect会有返回值,可以接收来判断,但是不管是派生自哪一个类,connect肯定是要一定的时间的,sleep(200)的时间很短,你用的时候是察觉不到的.或者自己用API函数写,不调用已经封装好的类。
sumos 2013-06-24
  • 打赏
  • 举报
回复
在你的CTestSock加上 void OnConnect(int e) { if(e == 0) { Send } } 如果你想用同步,直接用CSocket

18,356

社区成员

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

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