Linux下网络编程,一般需要包含的头文件包括:
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#Include <arpa/inet.h>
#include <netdb.h>
#include <unistd.h>
Linux下网络地址有:
struct sockaddr
{
unsigned int sin_family; //取值AF_INET;
char sa_data[14];
}
这种结构不常用,常用的是:
struct sockaddr_in
{
short int sin_family; //取值AF_INET;
unsigned short int sin_port; //取值htons(PORT);
struct in_addr sin_addr; //取值.sin_addr.s_addr = inet_addr("*.*.*.*");
unsigned char sin_zero[8]; //取值bzero(.sin_zero,8)或memset(.sin_zero,0,8);
}
其中:
struct in_addr
{
unsigned long s_addr; //存储IP地址。
}
所以创建一个网络地址::
strcut sockaddr_in src;
src.sin_family = AF_INET;
src.sin_addr.s_addr = inet_addr("*.*.*.*");
bzero(src.sin_zero,8);
其中用到了,inet_addr是linux提供的网络编程中使用的IP转换工具。
inet_addr("*.*.*.*");将字符串IP地址转换成网络地址,并且是网络字节序的。
相反的转换工具有inet_ntoa等。