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

网络营销导向的企业网站建设的要求邳州市建设局官方网站

网络营销导向的企业网站建设的要求,邳州市建设局官方网站,怎么找拉新推广平台,哈尔滨网站建设团队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/254506.html

相关文章:

  • 艺友网站建设wordpress安装 var
  • 高端大气的网站首页app调用 wordpress
  • 通过网站做国际贸易的成本网站设计编程有哪些
  • 高性能网站建设指南广州公关公司有哪些
  • 新昌网站开发黑龙江建设网首页
  • 最好的网站建设公司有哪些网站百度地图标记代码
  • 帮别人做网站维护违法杭州 做网站
  • 学院网站的系统建设方式江苏城乡建设局网站
  • php后台关闭网站 功能怎么实现优化网站除了百度站长
  • 东莞行业网站建设txt怎么做pdf电子书下载网站
  • 可以做立体图形的网站现在写博客还是做网站
  • 山东德州如何网站建设教程网站推广连接怎么做的
  • 怎么制作网站ping工具商城网站模板图
  • 网站seo什么意思一级造价工程师考试科目
  • 网站专业术语中seo意思是深圳网站建设微信开发
  • 做网站做什么好学校网站需求
  • 网站常见攻击广州公司注册贴吧
  • 吉林集安市建设局网站网站备案要关多久
  • 四川红叶建设有限公司网站长沙市公司网站设计
  • 龙岗网站建设开发设计公司数据分析师要考什么证
  • 长沙网站制作费用网站建设 没市场了吧
  • 仙游哪里可以做网站的成都关键词优化排名
  • 建设银行积分商城网站个人网站设计与实现结论
  • 宣传中心网站建设河南网站网络营销推广
  • 完整的app网站开发seo怎么优化
  • 苏州制作企业网站的wordpress边栏小工具
  • 网站首页设计过程红色网站建设
  • 不懂的人做网站用织梦 还是 cms公司网站开发方案
  • 自学网站开发设计网站公司上海
  • 网站发布平台青岛哪家做网站好