Linux网络编程基础
来源:互联网 发布:极右势力的网络保护伞 编辑:程序博客网 时间:2024/04/29 11:01
一、TCP/IP结构:
二、字节序
1、
#include <arpa/inet.h>
主机字节序转换为网络字节序:
uint32_t htonl(uint32_t hostlong);//把主机长整形数转换为网络的长整形数//long一般用于转换IP地址,short一般用于转换端口;
uint16_t htons(uint16_t hostshort);
网络字节序转换为主机字节序:
uint32_t ntohl(uint32_t netlong);
uint16_t ntohs(uint16_t netshort);
举例:
#include<stdio.h>#include<arpa/inet.h>int main(){ int ipcount=0x01234567; int ipnet=htonl(ipcount); printf("old is %d\n",ipcount); printf("new is %d\n",ipnet); return 0;}
2、IP地址其实质是int类型的;而在传输过程中是字符串类型的;
IP地址转换:IP地址实际的值和显示的字符字符串之间的转换;
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
int inet_aton(const char *cp, struct in_addr *inp);
功能:把字符串形式的IP地址转换为其实际值(int),把其值存放在inp结构体中了;
in_addr_t inet_addr(const char *cp);
in_addr_t inet_network(const char *cp);
char *inet_ntoa(struct in_addr in);
功能:把int类型的IP地址的值转换为字符串类型的IP地址;
参数:in是IP地址的值;
struct in_addr inet_makeaddr(int net, int host);
in_addr_t inet_lnaof(struct in_addr in);
in_addr_t inet_netof(struct in_addr in);
举例:
#include<sys/socket.h>#include<netinet/in.h>#include<arpa/inet.h>#include<stdio.h>int main(){ struct in_addr my_addr; inet_aton("192.168.0.1",&my_addr); printf("addr to net is :%d\n",my_addr.s_addr); printf("addr is :%s\n",inet_ntoa(my_addr)); return 0;}~运行结果:
[root@localhost app_code]# ./aton_addr
addr to net is :16820416
addr is :192.168.0.1
#include<netdb.h>
struct hostent *gethostbyname(const chat *name);
struct hostent
{
char *h_name;
char **h_aliases;
int h_addrtype;
int h_length;
char **h_addr_list;
#define h_addr h_addr_list[0];
}
#Include<sys/socket.h>
struct hostent *gethostbyaddr(const void *addr,socklen_t len,int type);
举例:
#include<sys/socket.h>#include<netinet/in.h>#include<arpa/inet.h>#include<stdio.h>#include<netdb.h>int main(){ struct in_addr myaddr; struct hostent *myhost; myhost=gethostbyname("www.baidu.oom"); myaddr.s_addr=(uint32_t)(myhost->h_addr); printf("www.baidu.com IP is:%s\n",inet_ntoa(myaddr)); return 0;}~运行结果:
[root@localhost app_code]# ./gethostbyname
www.baidu.com IP is:208.113.116.1
- linux网络编程基础
- Linux 网络编程基础
- Linux网络编程基础
- Linux网络编程基础
- linux 网络编程基础
- Linux网络编程基础
- linux网络编程基础
- linux网络编程基础
- Linux网络编程基础
- Linux网络编程基础
- Linux网络编程基础
- Linux 网络编程基础
- Linux 网络编程基础
- linux网络编程基础
- linux网络编程基础
- Linux网络编程基础
- Linux网络编程基础
- Linux网络编程基础(一)
- JavaWeb中的四大作用域
- jdk与jre的差别
- 2.10
- MonaServer的可扩展性和负载均衡
- 商户入网第三方支付——易宝之PC端支付流程
- Linux网络编程基础
- 《程序员面试金典》原串翻转
- codeforces 161D D. Distance in Tree(树形dp)
- Session的生命周期
- 接口的回调2-Android学习
- poj3415 Common Substrings (后缀数组+单调栈)
- 图像特征提取之(一)HOG特征
- Linux查看所有用户用什么命令
- tomcat 优化