• 大小: 5KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-28
  • 语言: C/C++
  • 标签: ip  mac  multicast  

资源简介

c语言,包含获取指定网口ip地址,mac地址,网关,以及c语言实现修改ip,网关,子网掩码,以及设置socket套接字加入到多播组的方法;。

资源截图

代码片段和文件信息

/******************************************************************************
*
*
*******************************************************************************
* File name:  net.c
* Purpose:      
* Author:  Felix(HuangFei)
* Version:     v01.00
* Compiler:  arm-linux-gcc
* Created on:  2014-11-28
*******************************************************************************
* Note:
* Revision history:  
*                       Created by HuangFei    2014-11-28
******************************************************************************/

#include 
#include 
#include 
#include 

#include 
#include 
#include 
#include 
#include 
#include 
#include 

#include 
#include 

#include “net.h“

#define TRUE    1
#define FALSE   0
#define MAC_ADDRESS_LEN 6
#define PATH_PROCNET_ROUTE “/proc/net/route“
#define IFACE_NAME_LENGTH        IF_NAMESIZE

/**********************************************************************
 * Function:      SetMacAddress
 * Description:   设置mac地址
 * Input:         pInterface :网络接口名字 如:eth0,pMacAddress:mac地址首地址
 * Return:        成功 1,失败 0
 * Others:        
**********************************************************************/
unsigned char SetMacAddress(char *pInterfacechar *pMacAddress)
{
    struct ifreq ifr;
    struct sockaddr *hwaddr;
    unsigned char *hwptr;
    int sockfd;
    int i;

/* 判断接口输入是否正确 */
    if((pInterface == NULL)||(pInterface[0]!=‘e‘)||(pInterface[1]!=‘t‘)||(pInterface[2]!=‘h‘))
    {
        printf(“input inteface error!\n“);
        return FALSE;
    }
    if(pMacAddress == NULL)
    {
        printf(“input mac address error\n“);
        return FALSE;
    }
    
sockfd= socket(AF_INETSOCK_DGRAM0);
if (sockfd<0)
{
printf(“Can‘t creat socket  \r\n“);
}
memset(&ifr 0 sizeof(ifr));
strncpy(ifr.ifr_name pInterface sizeof(ifr.ifr_name)-1);
    
     /*读出socket的信息*/
if (0 > ioctl(sockfd SIOCGIFFLAGS &ifr))
{
printf(“close the ethx:unknown interface\r\n“);
}
ifr.ifr_flags &= ~IFF_UP;
    /*将信息写到socket中,从而关闭eth0*/
if (0 > ioctl(sockfd SIOCSIFFLAGS &ifr)) 
{
printf(“Can‘t close the ethx \r\n“);
        return FALSE;
}

/*---------------------------------------------------------------------*/
/* set the interface eth0‘s  MAC address                               */
/*---------------------------------------------------------------------*/
memset(&ifr 0 sizeof(ifr));
strncpy(ifr.ifr_name pInterface sizeof(ifr.ifr_name)-1);
hwaddr=(struct sockaddr *)&ifr.ifr_hwaddr;
    
    /*ARPHRD_ETHER=1,标识接收的ARP为以太网格式*/
hwaddr->sa_family = ARPHRD_ETHER;
hwptr=hwaddr->sa_data;

for(i=0;i<6;i++)
*hwptr++ = (unsigned char)pMacAddress[i];

if (0 > ioctl(sockfd SIOCSIFHWADDR &ifr))
{
printf(“Can‘t set the MA

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      26187  2015-04-27 20:40  net.c

     文件       1895  2015-04-27 20:40  net.h

----------- ---------  ---------- -----  ----

                28082                    2


评论

共有 条评论