WIN2000,VC6.0,
协议:TCP,用SOCKET API函数写的程序
现象:接收数据时会随机丢失一条数据
请指点迷津!
接收数据的缓冲区太小,应该放在循环中receive,直至接受的数据长度为0.
例子有啊.
基本思想就是利用了WINDOWS的消息机.
如果有数据过来,SOCK内核系统会发送FD_READ消息到给你的窗体程序,你在FD_READ中进行相应处理就可以了.
如果数据队列接收完成,或者是当前内核中没有数据了或者是SOCKET刚刚建立,SOCK内核会首先发送FD_WRITE消息给你的窗体,说明可以发送数据了.
如果你不想发送数据的话,就不要对FD_WRITE消息进行SEND()的发送,而只是调用SELECT()函数,向内核指明用户程序只感兴趣FD_READ消息,就是说当前如果有数据要接收,系统会发送FD_READ消息,如此反复,就可一实现你的功能.