cAsyncSocket 的 onReceive 问题
我的发送段 ,发送4条结构数据 到接收段
接收段,代码如下
void cdasocket::onreceive(int nerrorcode)
{
// todo: add your specialized code here and/or call the base class
message_stru1 * mymessage;
int ret=0;
cstring szip("127.0.0.1");
uint uport=7654;
ret= this->receivefrom (mymessage,sizeof(message_stru1),szip,uport,0);
trace("howmany%i\n",ret);
if(ret==error)
{
trace("error!");
afxmessagebox("wrong");
}
else
{
trace("right");
}
casyncsocket::onreceive(nerrorcode);
}
后来调试窗口中一直不停的出现 right ,
并且,receivefrom 的返回值是 -1
哪位朋友告诉我这是什么回事啊!
推荐阅读
onreceive事件是当你的socket接受到对方传过来的数据的时候就触发,,你那不停的出现right是不是对方在不停的发送数据?
winsock.h如此定义:
#define wsabaseerr 10000
/*
* windows sockets definitions of regular microsoft c error constants
*/
#define wsaeintr (wsabaseerr+4)
#define wsaebadf (wsabaseerr+9)
#define wsaeacces (wsabaseerr+13)
#define wsaefault (wsabaseerr+14)
wsaefault the lpsockaddrlen argument was invalid: the lpsockaddr buffer was too small to accommodate the peer address.
建议用
overload函数:int receivefrom( void* lpbuf, int nbuflen, sockaddr* lpsockaddr, int* lpsockaddrlen, int nflags = 0 );


讨论区