接收多播数据时,我将收到的数据(u_char *)发给消息响应函数来处理,结果数据居然丢了,只剩4个字节,为什么呢?
// 接收多播消息线程
DWORD WINAPI CTestDlg::RecvMCProc(LPVOID lpParameter)
{
SOCKET sock;
HWND hwnd=((RECVPARAM*)lpParameter)->hwnd;
CString sWSIP = "192.168.1.10";
delete lpParameter; //别忘了释放内存
WSADATA wsd;
struct sockaddr_in local,remote;
SOCKET sockM;
int len = sizeof( struct sockaddr_in);
//初始化WinSock2.2
if( WSAStartup( MAKEWORD(2,2),&wsd) != 0 )
{
AfxMessageBox("函数 WSAStartup() 初始化WinSock2.2 失败/n");
return false;
}
if((sock=WSASocket(AF_INET,SOCK_DGRAM,0,NULL,0,
WSA_FLAG_MULTIPOINT_C_LEAF|WSA_FLAG_MULTIPOINT_D_LEAF|
WSA_FLAG_OVERLAPPED)) == INVALID_SOCKET)
{
// 接收多播消息线程
DWORD WINAPI CTestDlg::RecvMCProc(LPVOID lpParameter)
{
SOCKET sock;
HWND hwnd=((RECVPARAM*)lpParameter)->hwnd;
CString sWSIP = "192.168.1.10";
delete lpParameter; //别忘了释放内存
WSADATA wsd;
struct sockaddr_in local,remote;
SOCKET sockM;
int len = sizeof( struct sockaddr_in);
//初始化WinSock2.2
if( WSAStartup( MAKEWORD(2,2),&wsd) != 0 )
{
AfxMessageBox("函数 WSAStartup() 初始化WinSock2.2 失败/n");
return false;
}
if((sock=WSASocket(AF_INET,SOCK_DGRAM,0,NULL,0,
WSA_FLAG_MULTIPOINT_C_LEAF|WSA_FLAG_MULTIPOINT_D_LEAF|
WSA_FLAG_OVERLAPPED)) == INVALID_SOCKET)
{