网络编程笔记

1、使用PCAP_OPENFLAG_PROMISCUOUS必须#define HAVE_REMOTE,否则编译报错。
pcap_open(d->name,65535,PCAP_OPENFLAG_PROMISCUOUS,1000,NULL,errorBuf)

2、常用结构

在windows/linux下有下面结构:
sockaddr结构--------这个结构不常用一般sockaddr_in
struct sockaddr {
	unsigned short sa_family; /* address family, AF_xxx */
	char sa_data[14]; /* 14 bytes of protocol address */
};

sockaddr_in结构(在netinet/in.h中定义):
struct sockaddr_in {
	short sin_family; /* Address family */
	unsigned short sin_port; /* Port number */
	struct in_addr sin_addr; /* Internet address */
	unsigned char sin_zero[8]; /* Same size as struct sockaddr */
};

在linux下:
in_addr结构
typedef struct in_addr{
unsigned long s_addr;
};

在windows下:
typedef struct in_addr {
    union {
        struct{
            unsigned char s_b1,
                          s_b2,
                          s_b3,
                          s_b4;
               } S_un_b;
        struct{
            unsigned short s_w1,
                           s_w2;
               } S_un_w;
            unsigned long S_addr;
          }S_un;
} IN_ADDR;

3、常用到的函数:

inet_addr
功能:将一个点分十进制的IP转换成一个长整数型数(u_long类型)
原型:in_addr_t inet_addr(const char *cp);  
参数:字符串,一个点分十进制的IP地址
头文件:Winsock2.h
链接库:Ws2_32.lib

inet_ntoa
函数声明:char *inet_ntoa (struct in_addr);
返回点分十进制的字符串在静态内存中的指针。
函数功能:将网络地址转换成“.”点隔的字符串格式。
所需库: winsock.h

4、将一个(字符串,一个点分十进制的IP地址)型到u_long型再到(字符串,一个点分十进制的IP地址)型
struct in_addr addr;
u_long ip_protocol->ipv4_sourpa=inet_addr("192.168.1.165");
memcpy(&addr,&ip_protocol->ipv4_sourpa,4);//内存数据复制
inet_ntoa(addr);


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值