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

给网站添加关键词wordpress衔接出错

给网站添加关键词,wordpress衔接出错,深圳网站公司网站建设,全屋定制十大名牌欧派前言#xff1a;之前因为做项目和找实习没得空#xff0c;计算机网络模块并没有写成博客#xff0c;最近得闲了#xff0c;把计算机网络模块博客补上。 目录 一#xff0c;UDP编程 1#xff09;创建套接字 2#xff09;绑定端口号 3#xff09;发送与接收数据 4之前因为做项目和找实习没得空计算机网络模块并没有写成博客最近得闲了把计算机网络模块博客补上。 目录 一UDP编程 1创建套接字 2绑定端口号 3发送与接收数据 4UDP简单的发送数据和接收数据服务器 二TCP编程 1创建套接字 2绑定端口号 3使套接字进入监听状态 4获取成功建立连接的的文件描述符和主机信息 5发送与接收数据 6连接其他主机 7TCP简单的发送数据和接收数据服务器 scoket编程即套接字编程是网络编程的基础它允许两台或者多台计算机进行网络通信这篇文章主要讲socket编程利用里面的TCP和UDP相关接口实现网络通信。 一UDP编程 在udp编程里面我们首先要创建一个套接字也就是文件描述符。用来接收数据与发送数据但注意UDP为每一个套接字维护一个缓冲区但是发送缓冲区是临时的、不可见的。这是为什么呢UDP是面向无连接的每次发送数据都是相对独立的这允许我们可以使用临时的缓冲区UCP数据发送完就不管任何事了不会像TCP一样要确认对方收到没收到还要进行重传等操作。不维护一个长久的缓冲区也可以节省空间资源使UDP变得轻量与高效。如果接收缓冲区设置成临时的那么数据到达后如果应用程序没有及时读取可能出现丢失那么如果一直等到读取完再销毁一个套接字缓冲区可能接收很多主机的信息可能接收缓冲区会频繁的创建销毁这会有很多不必要的开销。 1创建套接字 第一个参数是网络通信协议如IPV4或者IPV6等具体参考下图 第二个参数是套接字的类型使用什么方式通信如数据报UDP或者字节流TCP等 返回值为-1代表创建失败并设置错误码大于0代表成功创建。 使用例子 //AF_INET代表IPV4协议格式SOCK_DGRAM代表以UDP数据报形式发送0代表选择IPV4和UDP的默认协议int fdsocket(AF_INET,SOCK_DGRAM,0);if(fd0){cout创建套接字失败endl;} 2绑定端口号 在我的上一篇文章我们以及明白绑定端口号加上IP才能确定互联网内的唯一一台主机客户端可以不绑定端口号这样子操作系统就会随机分配端口号但是服务端不能这样不然其他人无法主动连接服务端因为其他人根本无法发现它需要被别人第一次主动发现需要绑定端口号。现在我们来学习绑定端口号的接口。 scokfd就是我们前面使用socket接口创建的文件描述符。我们重点介绍接下来第二个参数第三个参数是第二个参数的长度。 addr是结构体强转后得到的它可以由IPV4结构体格式强转得到也可以由IPV6格式强转得到socketaddr_in是IPV4协议socketaddr_un是IPV6协议。可以看下图理解 struct socketaddr里面的内容 struct socketaddr_in里面的内容 上图struct in_addr里面的内容 具体初始化和使用例子 //IPV4结构体struct sockaddr_in _addr; //设置为IPV4协议_addr.sin_familyAF_INET;//端口号网络字节序_addr.sin_porthtons(PORT);//IP地址网络字节序inet_addr函数将C风格字符串的IP地址形式转化成uint32_t的网络字节序类型_addr.sin_addr.s_addrinet_addr(IP);//成功返回0失败返回-1设置错误码设置成功只能接收来自IP主机发送给PORT的信息int resultbind(fd,(struct sockaddr*)_addr,(socklen_t)sizeof(_addr));if(result!0){cout绑定端口号失败endl;} 3发送与接收数据 发送数据UDP协议使用的是sendto接口 socketfd就是套接字文件描述符buf是发送的数据地址len是发送数据的长度flag是位图使用|可以实现对发送的方法控制 发送标志可以是一个或多个标志的组合用于修改 sendto 的行为。常见的标志包括 MSG_CONFIRM请求确认消息已被接收某些实现可能不支持。MSG_DONTROUTE避免路由直接发送到本地接口。MSG_DONTWAIT非阻塞发送如果操作会阻塞则立即返回错误。MSG_EOR表示记录结束对某些协议有意义。MSG_MORE指示发送的数据是更大消息的一部分。 后面两个参数就不必多少目标地址的信息和长度强转得来。最后成功返回发送数据的长度失败返回-1并设置错误码。 接收数据UDP协议用的是recvfrom函数 socketfd就是套接字文件描述符buf是接收数据存放的地址len是接收数据的最大长度flag是位图使用|可以实现对接收数据的方法控制 接收标志可以是一个或多个标志的组合用于修改 recvfrom 的行为。常见的标志包括 MSG_PEEK查看数据而不从队列中删除它。MSG_WAITALL请求接收完整的消息对于某些协议可能不适用。MSG_DONTWAIT非阻塞接收如果操作会阻塞则立即返回错误。MSG_TRUNC即使数据被截断也继续接收通常与 MSG_PEEK 一起使用。MSG_CTRUNC如果控制消息被截断则设置 msg_flags 的 MSG_CTRUNC 标志。 src_addr会返回发送数据的信息如端口号IP地址addrlen是src_addr的长度。成功返回收到数据的长度失败返回-1。 4UDP简单的发送数据和接收数据服务器 中间可能有一个地方没讲清楚bind函数不论接收数据还是发送数据都最好设置设置成功能接收你设置的主机发过来的特点端口号消息sendto函数里面设置的是要发送给的人的IP和端口号。recvfrom函数里面的struct sockeaddr是接收消息的发送主机信息方便你回信息和处理。 发送端 #include sys/types.h /* See NOTES */#include sys/socket.h#includeunistd.h#include arpa/inet.h#include netinet/in.h#includeiostreamusing namespace std;#define PORT 8081//本地环回通信测试#define IP 127.0.0.1int main(){//AF_INET代表IPV4协议格式SOCK_DGRAM代表以UDP数据报形式发送0代表选择IPV4和UDP的默认协议int fdsocket(AF_INET,SOCK_DGRAM,0);if(fd0){cout创建套接字失败endl;return -1;}//不绑定端口号操作系统随机分配char msg[13]hello world!;struct sockaddr_in _send; _send.sin_familyAF_INET;_send.sin_porthtons(8080);_send.sin_addr.s_addrinet_addr(IP);//给地址为IP主机8080端口号发送消息int resultsendto(fd,(void*)msg,13,0,(struct sockaddr*)_send,(socklen_t)sizeof(_send));if(result0){cout发送数据失败endl;return -1;}close(fd);return 0;} 接收端 #include sys/types.h /* See NOTES */#include sys/socket.h#includeunistd.h#include arpa/inet.h#include netinet/in.h#includeiostreamusing namespace std;#define PORT 8080int main(){//AF_INET代表IPV4协议格式SOCK_DGRAM代表以UDP数据报形式发送0代表选择IPV4和UDP的默认协议int fdsocket(AF_INET,SOCK_DGRAM,0);if(fd0){cout创建套接字失败endl;return -1;}//IPV4结构体struct sockaddr_in _addr; //设置为IPV4协议_addr.sin_familyAF_INET;//端口号网络字节序_addr.sin_porthtons(PORT);//接收所有主机的信息_addr.sin_addr.s_addrINADDR_ANY;//成功返回0失败返回-1设置错误码int resultbind(fd,(struct sockaddr*)_addr,(socklen_t)sizeof(_addr));if(result!0){cout绑定端口号失败endl;return -1;}char msg[20];struct sockaddr_in recv;//必须写不能为空。socklen_t lensizeof(recv);resultrecvfrom(fd,(void*)msg,20,0,(struct sockaddr*)recv,len);if(result0){cout接收数据数据失败endl;return -1;}for(int i0;iresult;i){coutmsg[i];}close(fd);return 0;} 二TCP编程 1创建套接字 创建套接字与UDP创建套接字相似只要把SOCK_DGRAM改为SOCK_STREAM //SOCK_STREAM代表字节流适用于TCPint fdsocket(AF_INET,SOCK_STREAM,0);if(fd0){cout创建套接字失败endl;return -1;} 2绑定端口号 绑定端口号与UDP没有差别就是接收来自指定的主机的连接请求UDP是没有连接需要发送消息时指定目的地址的。暂时简单理解就行。 struct sockaddr_in _addr; //设置为IPV4协议_addr.sin_familyAF_INET;//端口号网络字节序_addr.sin_porthtons(PORT);//IP地址网络字节序inet_addr函数将C风格字符串的IP地址形式转化成uint32_t的网络字节序类型_addr.sin_addr.s_addrinet_addr(IP);//成功返回0失败返回-1设置错误码int resultbind(fd,(struct sockaddr*)_addr,(socklen_t)sizeof(_addr));if(result!0){cout绑定端口号失败endl;return -1;} 3使套接字进入监听状态 在TCP编程里面创建套接字后并不能直接使用TCP套接字只用来接收来自其他主机的连接请求UDP发送完数据就不管了是无连接的TCP是面向连接的双方会建立一个连接也就是会为两台主机间创建单独的文件描述符并且进行管理这个文件描述符只能用来双方通信而UDP可以实现一个文件描述符也就是socket就向所有主机发送消息。只有将套接字变成监听状态才会接收来自其他主机的连接。 第一个参数无需多言就是我们使用socket函数创建的套接字backlog是允许同时与多少台主机建立连接也就是同时创建多少个通信的文件描述符成功返回0失败返回-1并设置错误码。 //允许同时最大与三个主机建立连接resultlisten(fd,3);if(result!0){cout套接字启动监听失败endl;return -1;} 4获取成功建立连接的的文件描述符和主机信息 套接字进入监听状态后我们需要获得建立连接的文件描述符这样基于文件描述符才能和建立连接的主机通信我们使用accept函数获取建立连接的消息一般使用一个while循环来获取得到的多个连接信息。 第一个参数是套接字第二个参数是连接主机的信息第三个是第二个参数的长度方便区分类型。成功返回建立连接的文件描述符失败返回-1并设置错误码。 while(1){//这里不对对方主机信息进行处理设置为空int fd_netaccept(fd,NULL,NULL);if(fd_net-1){coutTCP连接失败endl;return -1;}//进行处理发送或者接收数据} 5发送与接收数据 TCP可以使用UDP的sendto和recvfrom函数发送与接收数据但一般不这么做因为TCP以及建立连接了每个连接文件描述符都只和一台主机通信被唯一的四元组来标识的这个四元组包括源IP地址、源端口号、目的IP地址和目的端口号。没必要使用这两个函数这两个函数里面还需要包括目的主机地。一般使用send和write,read与recv。 flag常用标志 MSG_DONTWAIT或MSG_NONBLOCK 作用允许非阻塞操作。如果套接字被设置为非阻塞模式并且发送缓冲区已满则send函数会立即返回而不是阻塞等待缓冲区空间可用。返回值在非阻塞模式下如果发送缓冲区已满send函数可能返回-1并设置errno为EAGAIN或EWOULDBLOCK表示资源暂时不可用。MSG_OOBOut-of-Band Data 作用发送带外数据。带外数据通常用于发送紧急数据这些数据会被接收方优先处理。然而并非所有协议都支持带外数据且其使用方式可能因协议而异。限制MSG_OOB标志通常仅适用于流式套接字如SOCK_STREAM而不适用于数据报套接字如SOCK_DGRAM。MSG_DONTROUTE 作用勿将数据路由出本地网络。这个标志告诉系统不要通过网关或路由器发送数据而只在本地网络上发送。然而并非所有系统都支持这个标志且其效果可能因系统而异。 成功返回发送数据大小失败返回-1设置错误码。 fd是文件描述符也就是accept函数的返回值buf被发送的数据count是发送的大小。 flag常用标志 MSG_PEEK 作用查看接收队列中的数据但不从队列中移除它们。这允许调用者在不实际消耗数据的情况下检查是否有数据可读。使用场景在需要多次读取同一份数据或检查数据是否到达时非常有用。MSG_WAITALL 作用阻塞调用直到接收到指定长度的数据或连接关闭。然而需要注意的是并非所有系统都支持这个标志且其行为可能因系统而异。使用场景在需要确保接收到完整消息时非常有用但应谨慎使用因为它可能导致程序在数据不足时长时间阻塞。MSG_DONTWAIT或MSG_NONBLOCK 作用在非阻塞模式下接收数据。如果当前没有数据可读则立即返回而不是阻塞等待。使用场景在需要避免阻塞等待数据到达时非常有用例如在非阻塞I/O或事件驱动的编程模型中。MSG_OOB 作用接收带外数据Out-of-Band Data。带外数据通常用于发送紧急数据这些数据会被接收方优先处理。然而并非所有协议都支持带外数据。使用场景在需要处理紧急数据或优先级较高的消息时非常有用但应确保所使用的协议支持带外数据。MSG_TRUNC 作用如果接收到的数据长度超过了缓冲区长度则只返回缓冲区长度的数据并截断多余的数据。然而需要注意的是并非所有系统都支持这个标志。使用场景在需要限制接收数据的大小或处理不完整数据时可能有用。MSG_CTRUNC 作用类似于MSG_TRUNC但用于控制信息的截断。如果接收到的控制信息长度超过了缓冲区长度则只返回缓冲区长度的控制信息。使用场景在处理带有控制信息的套接字时可能有用。MSG_ERRQUEUE 作用接收错误信息。如果接收到的数据包出现错误则会将错误信息放入错误队列中可以通过此标志来接收这些错误信息。使用场景在需要处理套接字错误或诊断网络问题时非常有用。 fd是文件描述符也就是accept函数的返回值buf存放数据count是接收数据的最大大小防止越界。 6连接其他主机 上面我们只说了如何被动连接其他主机但我们该如何主动连接其他主机呢使用connect函数我们主动连接其他主机是需要设置协议和IP端口号信息的。注意connect连接成功之后这个scokfd就被占用了用来后续的通信需要继续使用socket函数创建与多台主机建立连接。这是与accept函数不同的地方accept函数是创建了新的文件描述符sockfd还可以继续监听。 成功返回0失败返回-1其他这些前面都讲过老生常谈了无需多言。 7TCP简单的发送数据和接收数据服务器 服务端 #include sys/types.h /* See NOTES */#include sys/socket.h#includeunistd.h#include arpa/inet.h#include netinet/in.h#includeiostreamusing namespace std;#define PORT 8080#define IP 127.0.0.1int main(){//SOCK_STREAM代表字节流适用于TCPint fdsocket(AF_INET,SOCK_STREAM,0);if(fd0){cout创建套接字失败endl;return -1;}//IPV4结构体struct sockaddr_in _addr; //设置为IPV4协议_addr.sin_familyAF_INET;//端口号网络字节序_addr.sin_porthtons(PORT);//IP地址网络字节序inet_addr函数将C风格字符串的IP地址形式转化成uint32_t的网络字节序类型_addr.sin_addr.s_addrinet_addr(IP);//成功返回0失败返回-1设置错误码int resultbind(fd,(struct sockaddr*)_addr,(socklen_t)sizeof(_addr));if(result!0){cout绑定端口号失败endl;return -1;}//允许同时最大与三个主机建立连接resultlisten(fd,3);if(result!0){cout套接字启动监听失败endl;return -1;}while(1){//这里不对对方主机信息进行处理设置为空int fd_netaccept(fd,NULL,NULL);if(fd_net-1){coutTCP连接失败endl;return -1;}char msg[13]hello world!;//进行处理发送或者接收数据resultsend(fd_net,(void*)msg,13,0);close(fd);}return 0;} 客户端 #include sys/types.h /* See NOTES */#include sys/socket.h#includeunistd.h#include arpa/inet.h#include netinet/in.h#includeiostreamusing namespace std;#define PORT 8080#define IP 127.0.0.1int main(){//SOCK_STREAM代表字节流适用于TCPint fdsocket(AF_INET,SOCK_STREAM,0);if(fd0){cout创建套接字失败endl;return -1;}//IPV4结构体struct sockaddr_in _addr; //设置为IPV4协议_addr.sin_familyAF_INET;//端口号网络字节序_addr.sin_porthtons(PORT);_addr.sin_addr.s_addrinet_addr(IP);int resultconnect(fd,(struct sockaddr*)_addr,(socklen_t)sizeof(_addr));if(result-1){cout连接主机失败endl;return -1;}char msg[20];resultrecv(fd,msg,20,0);for(int i0;iresult;i){coutmsg[i];}close(fd);return 0;} 创造不易我为人人人人为我如果大家有所收获的话可以点赞加关注下一篇文章将会着重讲TCP与UDP的特性。
http://www.sczhlp.com/news/269446/

相关文章:

  • 企业网站策划书ppt网站做搜索要用数据库吗
  • 如何创建属于个人网站用来做调查问卷的网站
  • dw做的网站怎么放到服务器上有哪些网站免费做推广
  • 长春有几个站可以坐火车wordpress 调整字体
  • 网站建设手稿网站模板前台后台
  • 网站做友链的好处落伍者论坛 做网站
  • 重庆网站制作套餐整体vi设计
  • 网站开发公司名字中高端网站设计排名
  • 怎么做影视类网站做翻译 英文网站
  • 专门做国外家具书籍的网站中国订单网
  • 1个空间做两个网站网易外贸通
  • 手机模板网站模板下载网站有哪些免费站推广网站链接
  • 肇庆企业建站模板百度商桥代码怎么加到网站上
  • 四川网站seo设计永康网站建设公司
  • 息烽县住房和城乡建设局网站那种软件可以做视频网站
  • 华为公司网站建设方案模板论坛网站用的虚拟主机
  • 外贸网站建设内容包括做设计在哪个网站找图片大全
  • 网站关键词排名突然没了vps内存wordpress优化
  • 手机网站规划网站维护得多久
  • 建站模板大全微电影网站源码
  • 电子商务网站建设 大纲设计好看的网站
  • 做网站内容需要自己填的聚通达网站建设
  • 页面设计的网站百度推广费用多少
  • 智慧软文网站重庆网站开发
  • 如何做网站短链接打广告在哪里打最有效
  • 高端企业网站要多少钱网站内容标签设计
  • 北京电商网站排行广州seo公司哪个比较好
  • 企业网站 源码 开源网站运营思路
  • 大悟网站建设宿迁网站建设案例
  • 辽宁响应式网站建设紫金网站建设价格