我把问题简单描述一下,我现在必须要用 CAsyncSocket类给 202.108.33.60 80 端口 发送一个字串"Hello world!",
class CTestSock : public CAsyncSocket;//beginCTestSock x;
x.Create();
x.Connect("202.108.33.60",80);
x.Send("hello world",8);发送总是失败的,我想我是知道原因的,应为CTestSock 是异步的,Connect函数返回了,但是其实没有建立好,立刻发送肯定会失败。如果在Connect之后Sleep(200),结果就是好的。
可是不同的网站这里的Sleep时间应该是不一样的,我想一联结好就立马发出去。不要有多的延时。
我想问一下还有没有简单的一定方式,我不想改CAsyncSocket方式,
能不能在Connect之间将x设成同步函数?
那们高手指点一下。CAsyncSocket异步

解决方案 »

  1.   

    在你的CTestSock加上
    void OnConnect(int e)
    {
    if(e == 0)
    {
      Send
    }
    }
    如果你想用同步,直接用CSocket
      

  2.   

    最近我也在写这个,CAsyncSocket是异步非阻塞的,如果你要用同步的 那就用Csocket类,它的connect会有返回值,可以接收来判断,但是不管是派生自哪一个类,connect肯定是要一定的时间的,sleep(200)的时间很短,你用的时候是察觉不到的.或者自己用API函数写,不调用已经封装好的类。
      

  3.   

    接收 CAsyncSocket 连接成功的消息
      

  4.   

    Connect这你想同步,那你用CAsyncSocket想在哪异步呢?如果必须用CAsyncSocket,就像1楼所说重载OnConnect
    否则就像2楼所说用CSocket,只要Connect成功,后面就可以直接发送