个人在Ubuntu 64 环境下写的第一个C语言程序
如图: 打开终端 其中cd net 为转到个人文件夹下 net文件夹位置,
gedit in.h 为使用gedit编辑器打开in.h文件 没有则创建它
打开之后在其中加入如下代码:
<span style="font-size:14px;">#include<stdint.h>
typedef uint32_t in_addr_t;
typedef uint16_t in_port_t;
typedef unsigned short sa_family_t;
struct in_addr{
in_addr_t s_addr;
};
struct sockaddr_in{
uint8_t sin_len;
sa_family_t sin_family;
in_port_t sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};
struct in6_addr{
uint8_t s6_addr[16];
};
struct sockaddr_in6{
uint8_t sin6_len;
sa_family_t sin6_family;
in_port_t sin6_port;
uint32_t sin6_flowinfo;
struct in6_addr sin6_addr;
};
struct sockaddr{
uint8_t sa_len;
sa_family_t sa_family;
char sa_data[14];
};
</span>
同样的方法创建addturn.c文件: 并在其中添加如下代码:
<span style="font-size:14px;">#include<stdio.h>
#include<stdlib.h>
#include"in.h"
int inet_aton(const char *cp, struct in_addr *inp);
char *inet_ntoa(struct in_addr in);
int main()
{
char *st = "192.168.0.1";
struct in_addr *add;
add = malloc(sizeof(struct in_addr));
inet_aton(st,add);
printf("%10d\n",add->s_addr);
struct in_addr inaddr;
inaddr.s_addr = 16820416;
char *strntoa = inet_ntoa(inaddr);
printf("%s\n",strntoa);
return 0;
}</span>
其中inet_aton实现将网络IP地址转换成整形数字
inet_ntoa实现将整形数字转换成IP地址
使用gcc进行编译 其中sudo为root用户
编译之后会产生中间文件 a.out 如图:
其中第一行 16820416 为 192.168.0.1 转换成整形数字的值
下一行则相反
个人总结而成 仅供大家参考 不足之处 可以交流。