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

网站 公众号 建设方案十堰网络销售

网站 公众号 建设方案,十堰网络销售,wordpress设置本地盘,国外推广怎么做TCP与UDP区别 UDP#xff1a;用户数据报协议#xff0c;面向无连接#xff0c;可以单播#xff0c;多播#xff0c;广播#xff0c; 面向数据报#xff0c;不可靠TCP#xff1a;传输控制协议#xff0c;面向连接的#xff0c;可靠的#xff0c;基于字节流#xff…TCP与UDP区别 UDP用户数据报协议面向无连接可以单播多播广播 面向数据报不可靠TCP传输控制协议面向连接的可靠的基于字节流仅支持单播传输 socket通信 是对网络中不同主机上的应用程序进程之间进行双向通信的端点的抽象 字节序 **小端字节序**低位存在内存的低位 大端字节序低位存在内存的高位 eg:小端 0x01 02 03 04 01是高位有效字节04是低位那么在内存中是这么存的 0x04 0x03 0x02 0x01 字节序转化内函数 h - host 主机主机字节序 to - 转换成什么 n - network 网络字节序 s - short unsigned short l - long unsigned int#include arpa/inet.h // 转换端口 short型2个字节 uint16_t htons(uint16_t hostshort); // 主机字节序 网络字节序 uint16_t ntohs(uint16_t netshort); // 主机字节序 网络字节序 // 转IP int型4个字节 uint32_t htonl(uint32_t hostlong); // 主机字节序 网络字节序 uint32_t ntohl(uint32_t netlong); // 主机字节序 网络字节序ip地址转换------点分十进制–网络通信2进制 通常人们习惯用可读性好的字符串来表示 IP 地址比如用点分十进制字符串表示 IPv4 地址以及用十六进制字符串表示 IPv6 地址。但编程中我们需要先把它们转化为整数二进制数方能使用。而记录日志时则相反我们要把整数表示的 IP 地址转化为可读的字符串 新版同时适用于IPV4和IPV6* 字母含义* p点分十进制的IP字符串* n表示network网络字节序的整数 * int inet_pton(int af, const char *src, void *dst); * 使用man inet_pton查看帮助* 功能将点分十进制的IP地址字符串转换成网络字节序的整数* 参数* af地址族* IPV4AF_INET* IPV6AF_INET6(IPV6)* src需要转换的点分十进制的IP字符串* dst转换后的结果保存在这个里面* 返回值* 1成功* 0源IP地址有误* -1地址族包含不可用的地址协议 * const char *inet_ntop(int af, const void *src, char *dst, socklen_t size);* 使用man inet_ntop查看帮助* 功能将网络字节序的整数转换成点分十进制的IP地址字符串* 参数* af地址族* IPV4AF_INET* IPV6AF_INET6(IPV6)* src要转换的ip的整数的地址* dst转换成IP地址字符串保存的地方* size第三个参数的大小数组的大小* 返回值返回转换后的数据的地址字符串和 dst 是一样的把IP和port打包为一个socket地址 协议族地址族描述PF_UNIXAF_UNIXUNIX本地域协议族PF_INETAF_INETTCP/IPV4z协议族PF_INET6AF_INET6tcp/IPV6协议族 //socket网络通信接口中表示socket地址的是一个结构体他的地址作为通信用但一般用下面的改进版本再转换成这个 #include bits/socket.h struct sockaddr { sa_family_t sa_family; char sa_data[14]; };typedef unsigned short int sa_family_t;为了兼容IPV6新的socketaddr_in // IPV4 #include netinet/in.h ----------------------------------------------------------------------- struct sockaddr_in { sa_family_t sin_family; /* __SOCKADDR_COMMON(sin_) */ in_port_t sin_port; /* Port number. */ struct in_addr sin_addr; /* Internet address. */ /* Pad to size of struct sockaddr. */ unsigned char sin_zero[sizeof (struct sockaddr) - __SOCKADDR_COMMON_SIZE - sizeof (in_port_t) - sizeof (struct in_addr)]; }; ----------------------------------------------------------------------- struct in_addr { in_addr_t s_addr; };// IPV6 struct sockaddr_in6 { sa_family_t sin6_family; in_port_t sin6_port; /* Transport layer port # */ uint32_t sin6_flowinfo; /* IPv6 flow information */ struct in6_addr sin6_addr; /* IPv6 address */ uint32_t sin6_scope_id; /* IPv6 scope-id */ };// 相关定义 typedef unsigned short uint16_t; typedef unsigned int uint32_t; typedef uint16_t in_port_t; typedef uint32_t in_addr_t; #define __SOCKADDR_COMMON_SIZE (sizeof (unsigned short int))TCP通信框架 实例客户端和服务端通信 服务端 #include stdio.h #include arpa/inet.h #include unistd.h #include iostream #include stringusing namespace std; #define SERVERIP 192.168.226.129 #define PORT 9999//服务器端 int main() {//创建socket套接字形成监听fdint lfd socket(AF_INET, SOCK_STREAM, 0);if (lfd -1) {perror(socket);return -1;}//形成一个端把ip和port打包好在新版的sockaddr_in结构体中struct sockaddr_in mServ;mServ.sin_family AF_INET;mServ.sin_port htons(PORT);//将上面字符串形式的点分十进制IP转化为网络字节序的IPinet_pton(AF_INET, SERVERIP, mServ.sin_addr.s_addr);//将上面的打包的端和监听fd绑定int ret bind(lfd, (struct sockaddr*)mServ, sizeof(mServ));if (ret -1) {perror(bind);return -1;}//监听fd开始监听,后面的值代表未连接和连接的数ret listen(lfd, 128);if (ret -1) {perror(listen);return -1;}cout 服务器启动成功等待连接.... endl;//接受连接返回一个新的真正用于交换数据的fdstruct sockaddr_in client;socklen_t client_addr_len sizeof(client);int cfd accept(lfd, (struct sockaddr*)client, client_addr_len);if (cfd -1) {perror(accept);return -1;}//输出客户端的ip和端口char clinet_ip[16];inet_ntop(AF_INET, client.sin_addr.s_addr, clinet_ip, sizeof(clinet_ip));//将n-p的ip写到clinet_ip中int clinet_port ntohs(client.sin_port);cout 连接成功客户端IP clinet_ip 端口 clinet_port endl;//读取客户端的数据char buf[1024];char writer[1024];while(1) {int read_len read(cfd, buf, sizeof(buf));if (read_len -1) {perror(read);return -1;}else if (read_len 0) {cout 客户端断开连接 endl;break;}else if (read_len 0) cout 客户端发来的数据 buf endl;//向客户端发送数据cout 请输入要发送的数据;cin writer;write(cfd, writer, sizeof(writer));} close(cfd);close(lfd);return 0; }客户端 #include stdio.h #include arpa/inet.h #include unistd.h #include iostream #include stringusing namespace std; #define SERVERIP 192.168.226.129 #define PORT 9999//客户端 int main() {int fd socket(AF_INET, SOCK_STREAM, 0);if (fd -1) {perror(client_socket);return -1;}//打包client的IP和PORT信息struct sockaddr_in clit;clit.sin_family AF_INET;clit.sin_port htons(PORT);inet_pton(AF_INET, SERVERIP, clit.sin_addr.s_addr);//客户端开始连接服务器int ret connect(fd, (struct sockaddr*)clit, sizeof(clit));if (ret -1) {perror(client connect);return -1;}cout 客户端开始连接.... endl;//开始通信char writer[1024];char buf[1024];while(1) {cout 请输入发给服务器的内容;cin writer;ret write(fd, writer, sizeof(writer));if (ret -1) {perror(client write);return -1;}ret read(fd, buf, sizeof(buf));if (ret -1) {perror(client read);return -1;} else if (ret 0) {cout 服务器断开连接 endl;break;} else cout 受到客户端返回信息 buf endl;}close(fd);return 0; }
http://www.dnsts.com.cn/news/225151.html

相关文章:

  • 工艺品网站建设super cache wordpress
  • 深圳网站建设公司团队高并发电商网站开发
  • 优秀网站案例欣赏a做爰视频免费网站
  • 手机壳定制网站制作网上商城推广
  • 十天学会网站建设尚层别墅装饰
  • 威海+网站建设wordpress透明插件
  • 网站建设忄金手指花总重庆模板网站建站
  • 单页网站源码wordpress 全局字段
  • 做PPT哪个网站的素材多点杭州有哪些做网站的公司好
  • 做网站自己买域名怎么免费申请网站域名
  • 自己网站的登录api怎么做烟台城乡建设学校官方网站
  • 石家庄建工科技学院石家庄做网站wordpress背景板
  • 外贸网站建设费用多少济南网站seo优化
  • php怎么做网站教程做视频网站注意什么软件
  • 苏州网站制作及推广wordpress文章显示不全
  • 网站不能批量上传图片襄阳路桥建设集团有限公司网站
  • 中文儿童网站模板千锋教育和达内哪个好
  • 做购物网站广告推广方案范文
  • 企业网站报价适合美工的网站
  • 网站建设范文wordpress游客怎么发表文章
  • 广西建设部投诉网站国外网站内容去哪些平台做
  • 微网站 微信网站 建设 维护 公司
  • 南宁百度 - 网站正在建设中wordpress 前台刷新
  • 企业网站建设的流程html5网页设计作品
  • 衣柜东莞网站建设技术支持上海官网建设费用
  • 中国移动官方网站登录入口南通经济开发区城乡建设局网站
  • 网站如何屏蔽ip国际新闻 军事
  • 网站正在建设源码北京学会网站建设
  • 怎么做微网站网页免费制作网站
  • 那个网站教你做毕设的上海优化外包公司排名