原始套接字绑定失败?

//创建RAW套接字并绑定7000端口m_socket1=socket(AF_INET,SOCK_RAW,IPPROTO_IP);if(INVALID_SOCKET==m... //创建RAW套接字并绑定7000端口
m_socket1=socket(AF_INET,SOCK_RAW,IPPROTO_IP);
if(INVALID_SOCKET==m_socket)
{
AfxMessageBox("创建原始套接字失败!");
return FALSE;
}

char FAR name[128];
gethostname(name, sizeof(name));
struct hostent FAR * pHostent;
pHostent = gethostbyname(name);

SOCKADDR_IN sockaddr1;
sockaddr1.sin_family=AF_INET;
//sockaddr1.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
memcpy(&(sockaddr1.sin_addr),pHostent->h_addr,pHostent->h_length);
sockaddr1.sin_port=htons(7000);

int binderr1;
binderr1=bind(m_socket1,(LPSOCKADDR)&sockaddr1,sizeof(SOCKADDR));
//binderr1=bind(m_socket1,(SOCKADDR*)&sockaddr1,sizeof(SOCKADDR));
cuowu=GetLastError();
if(binderr1==SOCKET_ERROR)
{
AfxMessageBox("原始套接字绑定失败!");
return FALSE;
}

程序如上,编译连接均没有问题,但一运行就出现“原始套接字绑定失败!”,调试发现错误代码10038,说是在非套接字上进行操作,但我查了半天也没找到具体原因,谁能帮我看一看?问题在哪里?
我这只是贴出了一部分,初始化前面都已经完成了,而且前面我还创建并绑定了一个UDP端口,该端口调试运行都正常,就是新增了上述代码后,再运行,这个raw端口就绑定不了
展开
 我来答
天凰寨主
2013-05-12
知道答主
回答量:2
采纳率:0%
帮助的人:3133
展开全部
在InitInstance()中添加源代码:
BOOL C(名字)App::InitInstance()//初始化实例
{
if (!AfxSocketInit())
{
AfxMessageBox(IDP_SOCKETS_INIT_FAILED);//套接字初始化失败
return FALSE;

}

#include "stdafx.h" 中添加#include <Afxsock.h>
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
失去逝去拭去
2014-11-19 · 超过50用户采纳过TA的回答
知道答主
回答量:104
采纳率:0%
帮助的人:139万
展开全部
参考答案: 狼亦黠矣,而顷刻两毙,禽兽之变诈几何哉?止增笑耳。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lfm13720
2008-11-01 · TA获得超过1102个赞
知道小有建树答主
回答量:896
采纳率:0%
帮助的人:0
展开全部
先用WSAStartup初始化套接字,好像是这个函数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gm7996
2008-11-01 · TA获得超过1199个赞
知道小有建树答主
回答量:645
采纳率:100%
帮助的人:544万
展开全部
调用WSAGetLastError看看具体的原因
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式