当前位置: 首页 > news >正文

杭州企业自助建站广告网站建设与制作

杭州企业自助建站,广告网站建设与制作,物业网站建设,微信公众平台官方网目录 1--IP地址和端口号 2--地址信息的表示 3--网络字节序与地址变换 4--网络地址的初始化与分配 5--Windows部分代码案例 1--IP地址和端口号 IP 地址分为两类#xff1a; ① IPv4 表示 4 字节地址族#xff1b; ② IPv6 表示 16 字节地址族#xff1b; IPv4 标准的 4 …目录 1--IP地址和端口号 2--地址信息的表示 3--网络字节序与地址变换 4--网络地址的初始化与分配 5--Windows部分代码案例 1--IP地址和端口号 IP 地址分为两类         ① IPv4 表示 4 字节地址族         ② IPv6 表示 16 字节地址族 IPv4 标准的 4 字节 IP 地址分为网络地址和主机地址一般分为 A、B、C、D和 E 类型         ① A类网络ID1字节主机ID3字节首字节范围0~127         ② B类网络ID2字节主机ID2字节首字节范围128~191         ③ C类网络ID3字节主机ID1字节首字节范围192~223         ④ D类网络ID4字节         ⑤ E类已被预约 端口号         端口号用于区分 Socket不同的应用程序不能将 1 个端口号分配给不同的 Socket         端口号由 16 位构成可分配的端口号范围是 0-65535其中 0-1023 是知名端口用于分配给特定的应用程序         TCP Socket 和 UDP Socket 不会共用端口号因此允许重复 2--地址信息的表示 表示 IPv4 地址的结构体 sockaddr_in struct sockaddr_in{sa_family_t sin_family; // 地址族uint16_t sin_port; // 16位 TCP/UDP 端口号struct in_addr sin_addr; // 32位IP地址char sin_zero[8]; // 不使用 } 成员 sin_family表示地址族常用的地址族如下         ① AF_INET 表示 IPv4 网络协议中使用的地址族         ② AF_INET6 表示 IPv6 网络协议中使用的地址族         ③ AF_LOCAL 表示本地通信中采用的 UNIX 的地址族 // 一般用法 SOCKADDR_IN servAddr; servAddr.sin_family AF_INET; bind() 函数第二个参数期望获得 sockaddr 结构体类型其定义如下 struct sockaddr{sa_family_t sin_family; // 地址族char sa_data[14]; // 地址信息包含IP地址和端口号其它部分填充为0 }         一般需要将 sockadd_in 结构体强制转换为 sockaddr 结构体变量将输入到 bind() 函数中         bind(serv_sock, (struct sockaddr*) serv_addr, sizeof(serv_addr)); 其中 serv_addr 是sockadd_in结构体变量 3--网络字节序与地址变换 CPU向内存保存数据的方式有两种         ① 大端序高位字节存放到低位地址         ② 小端序高位字节存放到高位地址         在通过网络传输数据时约定采用统一的网络字节序方式即统一为大端序先把数据数组转化成网络字节序大端序再进行传输接收方收到数据后将网络字节序解析为符合自己CPU的数据方式 // 字节序转换 unsigned short htons(unsigned short); // 主机字节序转换为网络字节序 unsigned short ntohs(unsigned short); // 网络字节序转换为主机字节序 unsigned long htonl(unsigned short); // 主机字节序转换为网络字节序 unsigned long ntohl(unsigned short); // 网络字节序转换为主机字节序 h 表示主机host字节序n 表示网络network字节序s 表示 shortlinux 中 short 类型占用 2 字节l 表示 longlinux 中 long 类型占用 4 字节 4--网络地址的初始化与分配 inet_addr() 函数会将字符串形式的 IP 地址转换为 32 位整数型数据并在转换类型的同时完成网络字节序的转换         inet_addr() 函数还可以检测无效的 IP 地址 // inet_addr.c // gcc inet_addr.c -o inet_addr // ./inet_addr#include stdio.h #include arpa/inet.hint main(int argc, char *argv[]){char *arrd1 1.2.3.4; char *arrd2 1.2.3.256;unsigned long conv_addr inet_addr(arrd1);if(conv_addr INADDR_NONE){printf(Error occured \n);}else{printf(Network ordered integer addr: %#lx \n, conv_addr);}conv_addr inet_addr(arrd2);if(conv_addr INADDR_NONE){printf(Error occured \n);}else{printf(Network ordered integer addr: %#lx \n, conv_addr);}return 0; } inet_aton() 函数的功能与 inet_addr() 相同但其在调用过程中会将转换后的 IP 地址信息代入到 sockaddr_in 结构体中因此使用频率更高 // inet_aton.c // gcc inet_aton.c -o inet_aton // ./inet_aton#include stdio.h #include stdlib.h #include arpa/inet.hvoid error_handling(char *message){fputs(message, stderr);fputc(\n, stderr);exit(1); }int main(int argc, char *argv[]){char *addr 127.232.124.79;struct sockaddr_in addr_inet;if(!inet_aton(addr, addr_inet.sin_addr)){error_handling(Conversion error);}else{printf(Network ordered integer addr: %#x \n, addr_inet.sin_addr.s_addr);}return 0; }inet_ntoa() 函数与上述两个函数的功能相反其将网络字节序整数型 IP 地址转换为字符串形式         调用 inet_ntoa() 函数后需要存储对应的字符串信息否则下次被调用会被覆盖 // 网络地址的初始化 struct sockaddr_in addr; char* serv_ip 211.217.168.13; // 声明 IP 地址字符串 char* serv_port 9190; // 声明端口号字符串 memset(addr, 0, sizeof(addr)); // 结构体变量 addr 的所有成员初始化为 0 addr.sin_family AF_INET; // 指定地址族 addr.sin_addr.s_addr inet_addr(serv_ip); // 基于字符串的 IP 地址初始化 addr.sin_port htons(atoi(serv_port)); // 基于字符串的端口号初始化 5--Windows部分代码案例 // gcc endian_conv_win.c -o endian_conv_win -lwsock32 // endian_conv_win#include stdio.h #include winsock.hvoid ErrorHandling(char* message){fputs(message, stderr);fputc(\n, stderr);exit(1); }int main(int argc, char *argv[]){WSADATA wsaData;unsigned short host_port 0x1234;unsigned short net_port;unsigned long host_addr 0x12345678;unsigned long net_addr;if(WSAStartup(MAKEWORD(2, 2), wsaData) ! 0){ErrorHandling(WSAStartup() error!);}net_port htons(host_port);net_addr htonl(host_addr);printf(Host ordered port: %#x \n, host_port);printf(Network ordered port: %#x \n, net_port);printf(Host ordered address: %#lx \n, host_addr);printf(Network ordered address: %#lx \n, net_addr);WSACleanup();return 0; } // gcc inet_adrconv_win.c -o inet_adrconv_win -lwsock32 // inet_adrconv_win#include stdio.h #include string.h #include winsock2.hvoid ErrorHandling(char* message){fputs(message, stderr);fputc(\n, stderr);exit(1); }int main(int argc, char *argv[]){WSADATA wsaData;if(WSAStartup(MAKEWORD(2, 2), wsaData) ! 0){ErrorHandling(WSAStartup() error!);}// inet_addr 函数调用示例{char *addr 127.212.124.78;unsigned long conv_addr inet_addr(addr);if(conv_addr INADDR_NONE){printf(Error occured! \n);}else{printf(Network ordered integer addr: %xlx \n, conv_addr);}}// inet_ntoa 函数调用示例{struct sockaddr_in addr;char *strPtr;char strArr[20];addr.sin_addr.s_addr htonl(0x1020304);strPtr inet_ntoa(addr.sin_addr);strcpy(strArr, strPtr);printf(Dotted-Decimal notation3 %s \n, strArr);}WSACleanup();return 0;}
http://www.hkea.cn/news/14284151/

相关文章:

  • 响水做网站找哪家好建设规划
  • 网站建设 三牛怎么做网站相册
  • 网站悬浮qq游戏网站平台怎么做的
  • 用pyton可以做网站吗杭州活动策划公司有哪些
  • 南昌网站建设方案开发wordpress 可以上传存储附件
  • 专业网站建设设计四大战略咨询公司
  • 去哪个网站做兼职苏州网站建设系统找哪家
  • 如何在网站搜关键字机械设计网站推荐
  • 友情链接平台网站17zwd一起做网店潮汕站
  • 怎么什么软件可以吧做网站网站二级目录打不开
  • 网站招聘顾问做啥的郴州网站建设推广方案
  • wordpress 博客样式wordpress主题 seo
  • 网站建设公司特色开拓网站建设
  • 海南网站备案团购做的比较好的网站
  • 帝国cms网站迁移盐城建设银行招聘网站
  • 南昌网站seo外包服务会计培训机构
  • 网站开发宝典免费的公司起名网
  • 网站建设页面带声音可以设计图案的软件
  • 套用模板网站0基础wordpress
  • 网站开发有哪些参考文献怎么取消网站备案
  • 南京学网站建设中英文网站asp怎么做
  • 做网站麻烦么自己网站怎么推广
  • 湛江网站建设公司哪个好商城公众号开发
  • 专业做视频的网站珠海网站建设品牌策划
  • 大学生做网上英语翻译兼职网站龙岩网站排名
  • 做网站用asp和html培训网站有哪些
  • 中文网站什么意思长沙企业模板建站
  • 电子类网站建设需要多少钱网站地址ip域名查询
  • 大理网站建设摄影师作品网站有哪些
  • 网站文字配色山西建筑劳务网站