raw-sockets

    0热度

    1回答

    我想每个接收TCP数据包的TCP报头(发往特定的程序,即一个端口) 似乎无法使用的recv()或recvfrom的()使用普通插座得到TCP报头。 所以,我想用原始套接字 与原始套接字,我可以使用recvfrom,(),如果主机收到大量数据包接收发往主机 所有IP数据包, 我需要检查的端口号每个数据包如此看是否是需要的。 那么它可能是非常时间和CPU虚拟? while() { recvfrom

    2热度

    1回答

    我基于原始套接字implemneting代码。为了接收即将到来的以太网帧,我必须将创建的套接字绑定到以太网接口。只有这样,才能做到这一点,就我本人而言,是通过调用setsockopt()的选项SO_BINDTODEVICE功能。 问题是我使用的FreeBSD不支持这种选项。是否有任何补丁可用于启用此功能或任何其他可信任的替代方案?

    4热度

    3回答

    我正在写一个使用原始套接字的ping程序,但即使正在处理SIGALRM,recvfrom也不会返回-1与EINTR。此SIGALRM由我的警报(1)生成。我想要 recvfrom返回,以便我可以决定数据包确实已经丢失。 #include "libsock" #include <netinet/ip.h> #include <netinet/ip_icmp.h> double total=0

    1热度

    2回答

    在我的应用程序打开原始套接字(LINUX内核3.8.5)具有下列 指令: ::socket(PF_PACKET, SOCK_RAW, htons((uint16_t)ETH_P_ALL)); 一切工作正常,我可以接收它并将其发送到另一个界面。 但是一段时间 ::recvfrom() 在该套接字返回1518(1504个有效负载字节+ 14 ETH_HLEN)。 当我尝试发送1518个字节但指

    2热度

    1回答

    我有一个C程序,它将一些数据发送到远程计算机上的python服务器。 C代码连接插座,然后发送出的带外消息,随后一些数据: int on = 1; fd = socket(PF_INET, SOCK_STREAM, 0); setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(int)) ... send(fd, msg, msg_siz

    2热度

    1回答

    #include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/ioctl.h> #include <unistd.h> #include <arpa/inet.h>

    2热度

    3回答

    我在Linux/Debian的RAW插槽工作,我有一个问题,当我使用write()代替的sendto(): struct sockaddr_ll socket_address; /* Index of the network device */ socket_address.sll_ifindex = if_idx.ifr_ifindex; /* Address length*/ sock

    0热度

    2回答

    在VC++上发送免费ARP请求和接收ARP应答包需要什么类型的RAW套接字。 int s = socket(AF_PACKET,SOCK_DGRAM,htons(ETH_P_ARP)); 什么应该是Windows的相应代码?

    1热度

    1回答

    有没有办法直接在Windows上使用winsock在链接上发送以太网数据包? 我需要广播链路上的以太网数据包(即目标MAC地址:广播​​(FF:FF:FF:FF:FF:FF))

    0热度

    1回答

    我想使用原始套接字发送数据包。 如果我创建一个IP数据包(icmp,tcp或udp数据包),则源IP和目的IP位于IP数据包中。现在我想通过以下线路发送它: memset(&sin, 0, sizeof(sin)); sin.sin_family = AF_INET; sin.sin_addr.s_addr = inet_addr(dst_ip); sendto(sd