套接字始终返回-1

阿拉·艾哈迈德(Alaa Ahmed)

我是网络编程的新手,我写了一个简单的代码只是为了在捕获的数据包中获取一定数量的字节,但是我无法启动套接字(总是返回-1),这是代码:

#include<stdio.h>
#include<arpa/inet.h>
#include<string.h>
#include<stdlib.h>
#include<sys/ioctl.h>
#include<sys/socket.h>
#include<net/if.h>
//#include<netinet/either.h>
#define ETHER_TYPE 0x0800

void main()
{
struct ifreq ifopts;
ssize_t numbytes=0;
int sockfd;
char ifname="eth0";
uint8_t buf[1024];

if((sockfd=socket(AF_INET,SOCK_RAW,0))<0)
{
printf("couldnt start socket \nsockfd = %d\n",sockfd);
exit(1);
}
strncpy(ifopts.ifr_name,ifname,sizeof(ifname)-1);
ioctl(sockfd,SIOCSIFFLAGS,&ifopts);
ifopts.ifr_flags |= IFF_PROMISC;
ioctl(sockfd,SIOCSIFFLAGS,&ifopts);
if((setsockopt(sockfd,SOL_SOCKET,SO_BINDTODEVICE,ifname,sizeof(ifname)-1))<0)
printf("couldnt bind \n");
numbytes=recvfrom(sockfd,buf,1024,0,NULL,NULL);
printf("got packet with size %d",numbytes);
}

谢谢

本·沃格特

您将需要进行检查errno以确认这一点(将是EACCES),但是失败是因为您的有效用户无权使用type的套接字SOCK_RAW

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

QSqlQuery size()始终返回-1

来自分类Dev

AssetInputStream.read()始终返回-1

来自分类Dev

为什么套接字无限返回-1(errno:104)

来自分类Dev

getopt始终返回1

来自分类Dev

packageInfo.versionCode始终返回1

来自分类Dev

num_rows始终返回1

来自分类Dev

getActiveCell始终返回A1

来自分类Dev

lambda始终返回“ 1”

来自分类Dev

NSOutlineView的SelectedRow始终返回-1

来自分类Dev

viewHolder.getAdapterPosition()始终返回-1

来自分类Dev

SQL-如果存在则始终返回1

来自分类Dev

C / C ++ Posix BSD套接字-HTTP请求始终返回状态400

来自分类Dev

Android M权限:checkSelfPermission()始终返回-1

来自分类Dev

recyclerview的findFirstVisibleItemPosition()始终返回-1

来自分类Dev

PHP Post始终返回1

来自分类Dev

perf_event_open始终返回-1

来自分类Dev

bash数组计数始终返回1

来自分类Dev

listView.SelectedItemPosition始终返回-1

来自分类Dev

MainWindow.CreateFile始终返回-1

来自分类Dev

套接字始终返回INVALID_SOCKET

来自分类Dev

列表中的indexOf方法始终返回-1

来自分类Dev

strtotime始终返回1月1日

来自分类Dev

函数套接字close()方法的返回值“ -1”是否可能?

来自分类Dev

套接字C ++:recv函数返回-1

来自分类Dev

PHP Post始终返回1

来自分类Dev

VBA getPixel始终返回-1

来自分类Dev

ExecuteNonQuery()始终返回-1

来自分类Dev

使用 setockopt;当套接字从另一侧关闭时,read 返回 0 而不是 -1

来自分类Dev

如何从 gen_tcp:accept/1 返回的套接字获取 MAC 地址?