我用VC++编写的抓包程序,程序没有错误,但是运行的时候提示winsock设置失败,为什么?

来源:百度知道 编辑:UC知道 时间:2024/06/05 22:41:22
void CListenDlg::OnButton1()
{
// TODO: Add your control notification handler code here
CWinThread *pThread=NULL;
CButton* pBtn=(CButton *)GetDlgItem(IDC_BUTTON1);
int n=pBtn->GetCheck();
m_HostIp=GetIp(); //得到本机IP
if(1==n) //开始监听
{
if(CreateSock()!=0) //建立
{
AfxMessageBox("WinSock设置失败");
DestroyWindow();
}
else
{
b_IsRun=TRUE;
pThread=AfxBeginThread(RecvIpPro,this);//创建线程
}
pBtn->SetWindowText("停止监听");
}
else //停止监听
{
b_IsRun=FALSE;
if(pThread)
{
TerminateThread(pThread->m_hThread, 0);
CloseHandle(pThread->m_hThread);
}

if(m_RawSock)
closesocket(m_RawSock);
pBtn->SetWindowText("开始监听");
}

}
//在线程冲中不断接受IP包
我以前在别的机子可以运行,可能不是程序的问题 .winsock是2.2的好像

既然winsock失败弹出来了,说明createsocket函数失败了。你可以跟踪进去看看,为什么会失败,到底是什么原因。查一下MSDN。一般很快能找到根结所在。

你得先判断winsock的版本