WSASend完成后,在收到GetQueuedCompletionStatus完成通知以前,WSASend的参数里面的Buffer可以修改或释放吗

解决方案 »

  1.   

    看看这个吧http://community.csdn.net/Expert/topic/5150/5150809.xml?temp=.8398554
      

  2.   

    GetQueuedCompletionStatus完成通知以后,数据是提交到发送缓冲了,还是对方已经确认收到了
      

  3.   

    接分...
    在收到完成端口通知前(其实意思是数据发送到系统缓冲区之前)是不能释放缓冲及其OVERLAPPED结构的,否则你会接到完成端口通知:
    ByteTransfered=0,GetLastError/WSAGetLastError==995.所以,在完面端口的编写过程中,WSARecv/WSASend中的缓冲及重叠结构应该在完成端口内接收到IO完毕通知后释放.
      

  4.   

    blastzgd(悟道) 你自己试过你所说的吗? ,我的测试结果怎么没有返回错误啊
      

  5.   

    blastzgd(悟道) 你自己试过你所说的吗? ,我的测试结果怎么没有返回错误啊
    ---------------------------------------------------------
    这个测试起来不容易啊  在你删除或者释放前 数据已经发送出去了
      

  6.   

    WSASend and WSARecv operate in an asynchronous way. So take care of the life time of the variables passed to the asynchronous functions。。
    be care of release the buffer except the buffer be send true
      

  7.   

    看看这个吧http://community.csdn.net/Expert/topic/5207/5207923.xml?temp=5.825222E-03
      

  8.   

    以前我认为是可以的,现在我认为是不能这么做的,具体的原因你到我的这个帖子里看看就知道了http://community.csdn.net/Expert/topic/5207/5207923.xml?temp=5.825222E-03
      

  9.   

    在得到通知之前,不要释放
    ──────────────────────
    国内专业的ACE网络编程、开发论坛开通:
    www.acejoy.com 
    涉及ACE使用和开发,中间件、服务器端软件的设计,P2P技术,
    socket网络编程、应用开发等内容。
    欢迎加入,大家一起交流、学习成长!
      

  10.   

    ProgrameMan(我要学汇编)我的说法是测试过的.我说的释放是指真正意义上的释放.而不是内存池中简单的置为可用.