网络编程与多线程设计 VC6.0
时间:2010-05-13 来源:jxhaoxia
在使用WinSock MFC 类之前,必须为应用程序初始化WinSock 环境。
首先需要在StdAfx.h的MFC库头文件中,加入SOCKET的库
#include <afxsock.h>
然后在App()的InitInstance()中调用实例初始化函数AfxSocketInit()
if(!AfxSocketInit())
{
AfxMessageBox("Add Socket Failure");
return FALSE;
}
在Dlg()的OnInitDialog()中,调用函数InitSocket()初始化socket,创建线程
BOOL CDemopicDlg::OnInitDialog()
|
//初始化两个SOCKET 1.作为客户端-发送数据,2.作为服务器-用于后台线程接收数据
|
子线程函数RecvProc(),作为后台函数接收UDP数据包,在recvfrom处阻塞
DWORD WINAPI CDemopicDlg::RecvProc(LPVOID lpParameter)
|
BUTTON函数OnSnd()中,调用打开对话框打开文件,并分包通过UDP发送
void CDemopicDlg::OnSnd() |
注意点:
测试过程中,子线程的recvfrom没有阻塞,是因为sockfd标示要在Dlg类下
声明初始化,通过参数将标示传递给子线程,不能只在子线程中声明和定义。