ICMPv6套接字创建失败
我尝试向远程网络发送ICMPV6消息,作为第一步,我尝试在一个简单类(ICMPv6套接字创建失败,c,sockets,ipv6,icmp,C,Sockets,Ipv6,Icmp,我尝试向远程网络发送ICMPV6消息,作为第一步,我尝试在一个简单类(SendICMPv6.c)中创建ICMPV6套接字,该类包含winsock2、WS2TCIP、stdio和stdlib头。但我无法创建套接字。有人能帮忙吗?怎么了 代码是: WSADATA wsaData; int iResult = WSAStartup(MAKEWORD(2, 2), &wsaData); if (iResult != 0) { wprintf(L"WSAStartup f
SendICMPv6.c
)中创建ICMPV6套接字,该类包含winsock2
、WS2TCIP
、stdio
和stdlib
头。但我无法创建套接字。有人能帮忙吗?怎么了
代码是:
WSADATA wsaData;
int iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
if (iResult != 0) {
wprintf(L"WSAStartup failed: %d\n", iResult);
return 1;
}
int fd = socket(AF_INET6, SOCK_RAW, IPPROTO_ICMPV6);
if (fd < 0) {
perror("creating socket failed");
}
WSADATA-WSADATA;
int-iResult=WSAStartup(MAKEWORD(2,2)和wsaData);
如果(iResult!=0){
wprintf(L“WSAStartup失败:%d\n”,iResult);
返回1;
}
int fd=插座(AF_INET6、SOCK_RAW、IPPROTO_ICMPV6);
如果(fd<0){
perror(“创建套接字失败”);
}
有人能解决这个问题吗?如果您仔细阅读,可以检查的选项很少:
SOCK\u RAW
sockets
如果Winsock服务提供程序支持AF_INET或AF_INET6地址系列的SOCK_RAW套接字,则SOCK_RAW的套接字类型应包含在函数为一个或多个可用传输提供程序返回的结构中
SOCK\u RAW
sockets
如果Winsock服务提供程序支持AF_INET或AF_INET6地址系列的SOCK_RAW套接字,则SOCK_RAW的套接字类型应包含在函数为一个或多个可用传输提供程序返回的结构中
SOCK_RAW
需要管理员权限。你的应用程序是否处于提升状态
当socket()
失败时,使用WSAGetLastError()
找出原因,例如:
WSADATA wsaData;
int iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
if (iResult != 0) {
printf("WSAStartup failed: %d\n", iResult);
return 1;
}
SOCKET fd = socket(AF_INET6, SOCK_RAW, IPPROTO_ICMPV6);
if (fd == INVALID_SOCKET) {
printf("creating socket failed: %d\n", WSAGetLastError());
return 1;
}
SOCK_RAW
需要管理员权限。你的应用程序是否处于提升状态
当socket()
失败时,使用WSAGetLastError()
找出原因,例如:
WSADATA wsaData;
int iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
if (iResult != 0) {
printf("WSAStartup failed: %d\n", iResult);
return 1;
}
SOCKET fd = socket(AF_INET6, SOCK_RAW, IPPROTO_ICMPV6);
if (fd == INVALID_SOCKET) {
printf("creating socket failed: %d\n", WSAGetLastError());
return 1;
}
@aribeiro代码不起作用,因此在代码评审时可能会偏离主题。@Pimgd,对不起,我的错@coredump:OP提到了winsock,这意味着代码在Windows上运行,Windows没有
errno
,您必须使用WSAGetLastError()
。@aribeiro代码不工作,因此在代码复查时它将脱离主题。@Pimgd,对不起,我的错@coredump:OP提到了winsock,这意味着代码在Windows上运行,Windows没有errno
,您必须使用WSAGetLastError()
。