LRESULT CChatDlg::OnSock(WPARAM wParam,LPARAM lParam)
{
switch (LOWORD(lParam))//用LOBYTE这个宏取出lParam的低字节
{
case FD_READ://发生是网络读取事件
WSABUF wsaBuf;
char recvBuf[200];
wsaBuf.buf = recvBuf;
wsaBuf.len = 200;
DWORD dwRead;
DWORD dwFlag = 0;
SOCKADDR_IN addrFrom;
int len = sizeof(SOCKADDR);
if(SOCKET_ERROR == WSARecvFrom(m_socket, &wsaBuf, 1, &dwRead, &dwFlag, (SOCKADDR*)&addrFrom, &len, NULL, NULL))
{
MessageBox("接收网络数据失败!");
return FALSE;
}
CString str;
CString strTemp;
str.Format("%s说:%s", inet_ntoa(addrFrom.sin_addr), recvBuf);
GetDlgItemText(IDC_EDIT_RECV, strTemp);
str += "\r\n";
str += strTemp;
SetDlgItemText(IDC_EDIT_RECV, str);
break;
}
return TRUE;
}