读书人

关于bind绑定的有关问题。本人小白求指

发布时间: 2013-04-26 16:27:53 作者: rapoo

关于bind绑定的问题。本人小白求指导
本帖最后由 oyljerry 于 2013-04-22 19:47:25 编辑 void CSniffAppDlg::OnBeginlisten()
{
//创建套接字
m_Sock = socket(AF_INET,SOCK_RAW, IPPROTO_IP );

char name[128];
memset(name,0,128);

hostent* phostent;

phostent = gethostbyname(name);

DWORD ip;

ip = inet_addr(inet_ntoa(*(in_addr*)phostent->h_addr_list[0]));


int timeout = 4000; //超时4秒

//设置接收数据的超时时间
setsockopt(m_Sock,SOL_SOCKET,SO_RCVTIMEO,(const char*)&timeout,sizeof(timeout));

sockaddr_in skaddr;
skaddr.sin_family = AF_INET;
skaddr.sin_port = htons(700);
skaddr.sin_addr.S_un.S_addr = ip;
//绑定地址
if ( bind(m_Sock,(sockaddr*)&skaddr,sizeof(skaddr))==SOCKET_ERROR)//就是这个地方
{
MessageBox("地址绑定错误");//绑定不上一直蹦出来。。
return;
}

DWORD inBuffer=1;
DWORD outBuffer[10];
DWORD reValue = 0;

if (WSAIoctl(m_Sock,SIO_RCVALL,&inBuffer,sizeof(inBuffer),&outBuffer,sizeof(outBuffer),&reValue,NULL,NULL)==SOCKET_ERROR)
{
MessageBox("设置缓冲区错误.");
closesocket(m_Sock);
return;
}
else
m_pThread = AfxBeginThread(ThreadFun,(void*)this);
}

bind总是绑定不上的。。只截取了代码的一部分。求大家帮忙 bind socket
[解决办法]
GetLastError()看看,将vs一管理员启动然后再bind()!
[解决办法]
原始套接字的使用一般需要用管理员的权限!

读书人网 >VC/MFC

热点推荐