标签:style blog http ar color os sp 文件 on
1. 创建一个DIALOG的项目
2. 在资源里创建聊天室界面
3. 在CDialog::InitInstance里开头增加:
if (!AfxSocketInit()) {
AfxMessageBox("load socket liabrary failed!");
return FALSE;
}
4. 在stdfax.h里增加:
#include <Afxsock.h>
5. 增加成员变量SOCKET m_socket;
6. 增加成员函数BOOL InitSocket();
1 BOOL CChatDlg::InitSocket(void) 2 { 3 m_socket = socket(AF_INET, SOCK_DGRAM, 0); 4 if (INVALID_SOCKET == m_socket) { 5 MessageBox("socket created failed!"); 6 return FALSE; 7 } 8 SOCKADDR_IN addrSock; 9 addrSock.sin_family = AF_INET; 10 addrSock.sin_port = htons(6000); 11 addrSock.sin_addr.S_un.S_addr = htonl(INADDR_ANY); 12 13 int retval; 14 bind(m_socket, (SOCKADDR *)&addrSock, sizeof(SOCKADDR)); 15 if (SOCKET_ERROR == retval) { 16 closesocket(m_socket); 17 MessageBox("bind error!"); 18 return FALSE; 19 } 20 return 0; 21 }
7. 在CChatDlg::OnInitDialog()里增加
InitSocket();
8. 在CChatDlg.h里增加
struct RECVPARAM {
SOCKET sock;
HWND hwnd;
};
在CChatDlg::OnInitDialog()的InitSocket();下面增加:
RECVPARAM *pRecvParam = new RECVPARAM;
pRecvParam->sock = m_socket;
pRecvParam->hwnd = m_hWnd;
HANDLE hThread = CreateThread(NULL, 0, RecvProc, (LPVOID)pRecvParam, 0, NULL);
CloseHandle(hThread);
9. 为CChatDlg增加函数
DWORD WINAPI CChatDlg::RecvProc(LPVOID lpParameter)
{
return 0;
}
在声明这个函数的头文件里加上static
10. 后面太复杂,看视频吧。。
标签:style blog http ar color os sp 文件 on
原文地址:http://www.cnblogs.com/yingzhongwen/p/4113006.html