史啦啦 的学生作业:
【图片】
/*
写一个代码实现以下功能
用户从命令行传递参数 ./a.out 127.0.0.1 9090
利用inet_aton和htons函数把ip,port转换为网络字节序后输出。
利用inet_ntoa和ntohs函数把ip,port转换为主机字节序后输出。
*/
#include
#include
#include
#include
#include
void ip_convert(const char *ip,const char *port)
{
struct in_addr net_addr;
int ret;
uint16_t net_port;
uint16_t host_port;
//host ip---->network ip
ret = inet_aton(ip,&net_addr);
if(0 == ret)
{
perror("Fail to inet_aton");
exit(EXIT_FAILURE);
}
printf("net_addr = %#x\n",net_addr.s_addr);
//host port---->network port
net_port = htons(atoi(port));
printf("net_port = %#x\n",net_port);
//network ip---->host ip
struct in_addr addr;
addr.s_addr = inet_addr(ip);
printf("host_ip = %s\n",inet_ntoa(addr));
//network port---->host_port
host_port = ntohs(net_port);
printf("host_port = %d\n",host_port);
return ;
}
int main(int argc,char *argv[])
{
if(argc != 3)
{
fprintf(stderr,"Usage : %s ip\n",argv[0]);
exit(EXIT_FAILURE);
}
ip_convert(argv[1],argv[2]);
return 0;
}