当前位置:  技术问答>linux和unix

原始套接字接收是多了4个字节,是怎么回事?

    来源: 互联网  发布时间:2017-02-01

    本文导语:  本帖最后由 kulung 于 2011-09-09 14:10:10 编辑 rt 两个一样的开发板,一个发送,一个接收,不管哪边发哪边接,接收方都会多四个字节,正好多在二层数据帧协议出,不知道如何解决,以下是源代码: //send.c #include  #inc...

本帖最后由 kulung 于 2011-09-09 14:10:10 编辑
rt 两个一样的开发板,一个发送,一个接收,不管哪边发哪边接,接收方都会多四个字节,正好多在二层数据帧协议出,不知道如何解决,以下是源代码:

//send.c
#include 
#include  //perror
#include  //strcpy,memset
#include  //socket
#include  //ioctl
#include  //ifreq
#include  //sockaddr_sll
#include  //ETH_P_ALL

#define IFRNAME0 "eth0"
#define IFRNAME2 "eth2"

#define BUF_SIZE 2048
char buf[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";

int main(int argc, char *argv[])
{
int i, sfd, len;
struct sockaddr_ll sll;
struct ifreq ifr;

if ((sfd=socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL))) == -1) {
perror("socket");
return 0;
}

memset(&ifr, 0, sizeof(ifr));
strcpy(ifr.ifr_name, IFRNAME0);
if ((ioctl(sfd, SIOCGIFINDEX, &ifr)) == -1) {
strcpy(ifr.ifr_name, IFRNAME2);
if ((ioctl(sfd, SIOCGIFINDEX, &ifr)) == -1) {
perror("ioctl 1");
close(sfd);
return 0;
}
}

memset(&sll, 0, sizeof(sll));

sll.sll_family = PF_PACKET;
sll.sll_ifindex =  ifr.ifr_ifindex;
sll.sll_protocol = htons(ETH_P_ALL);

if ((bind(sfd, (struct sockaddr *)&sll, sizeof(sll))) == -1) {
perror("bind");
close(sfd);
return 0;
}

while (1) {
len = sizeof(buf);
sendto(sfd, buf, len, 0, (struct sockaddr *)&sll, sizeof(sll));
printf("send data2: %dn", len);
for(i=0; i

    
 
 

您可能感兴趣的文章:

  • TCP连接中创建的监听描述字和已连接描述字(套接字)对应的是同一个套接口么,如果是的话,读写数据时系统怎么区分是哪个套接字的?
  • 监听套接字listenfd 已连接套接字connectfd 中fd什么意思
  • 请问原始套接字的绑定和一般都的套接字的绑定有什么区别吗
  • 非阻塞套接字
  • 关于linux套接字的问题
  • TCP套接字抓包的问题
  • 是否可以通过消息队列在进程之间传递套接字?
  • socket套接字群发?
  • linux下原始套接字创建失败
  • SOCKET 编程之从容关闭套接字如何实现????
  • Linux 套接字的问题
  • 如何判断套接字是被关闭了。
  • 请问linux下套接字读就绪产生什么信号
  • Linux下如何在普通用户下创建原始套接字(实现ping)
  • 多线程close() socket套接字的问题
  • udp套接字能否设定成非阻塞模式?
  • 套接字
  • 关于数据报套接字的使用
  • 请教高手:linux原始套接字问题
  • 请问各位大侠:如何将标准输出定位到套接字?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • [求助]关于unix域套接字
  • 关于子进程间共享套接字描述符的问题?
  • write函数往套接字文件描述符写入数据的时候数据存储在哪里 ?
  • 套接字是进程私有的资源吗?
  • 类unix系统编写大规模响应网络服务程序使用什么套接字模型
  • 使用原始套接字来发送一个icmp包,不适用setsockopt做控制会怎么样?
  • 请问一般套接字的绑定和原始套接字的绑定有什么区别吗
  • Unix Domain套接字的Java包 junixsocket
  • socket(套接字)怎么传输二进制数据?急
  • 高分求教:有关套接字建立ftp的问题
  • NOSQL iis7站长之家
  • 请教套接字中的select()函数问题
  • 套接字中,第二个参数SOCK_RAW 与SOCK_PACKET 有什么区别
  • 请教高人:同一个套接字(做客户端)连接到server后在不同子进程里使用能否不采取互斥措施收发?
  • 如果使用套接字编程,增样控制连接超时?
  • 高分求高手赐教-关于linux下进程共享TCP套接字的问题
  • 一个未连接的客户端socket套接字在select处的奇怪行为
  • 请问在Unix/Linux上的套接字模型有那些,那些比较常用,Apache使用的是那个,谢谢?!如果能和Windows上的作对比就更好了
  • 请问在vmware虚拟机下的UBUNTU系统里,原始套接字sock_raw能否正常收发数据
  • 套接字的疑惑


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,