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

给客户做网站需要付法律责任吗ug.wordpress.org

给客户做网站需要付法律责任吗,ug.wordpress.org,h5牛牛棋牌源码,看电影电视剧的好网站纤纤影院提示#xff1a;文章写完后#xff0c;目录可以自动生成#xff0c;如何生成可参考右边的帮助文档 C实现客户端/服务端通信#xff08;一#xff09; 网络编程的基本概念1. 客户端/服务器通信模型#xff1a;2. socket函数#xff1a;3. 主机字节序和网络字节序#xf… 提示文章写完后目录可以自动生成如何生成可参考右边的帮助文档 C实现客户端/服务端通信一 网络编程的基本概念1. 客户端/服务器通信模型2. socket函数3. 主机字节序和网络字节序4. sockaddr 结构体5. sockaddr_in 结构体6. 字符串IP与大端序IP的转换 实现简单的客户端实现简单的服务端总结 网络编程的基本概念 1. 客户端/服务器通信模型 2. socket函数 int socket(int domain, int type, int protocol); 1domain通讯协议族 PF_INET: IPV4互联网协议族 PF_INET6: IPV6互联网协议族 PF_LOCAL: 本地通信协议族 PF_PACKET: 内核底层的协议族 PF_IPX: IPX Novell协议族 2type数据传输类型 SOCK_STREAM: 面向连接的socket SOCK_DGRAM: 无连接的socket 3protocol最终使用的协议 在IPV4互联网协议族中传输类型为SOCK_STREAM的协议只有IPPROTO_TCP数据传输方式为SOCK_DGRAM的协议类型只有IPPROTO_UDP 可以填0编译器自动识别3. 主机字节序和网络字节序 多个字节组成的整数存放涉及到字节序。 大端序低位字节存在高位高位字节存在低位如0X123456内存中存放为12 34 56 小端序低位字节存在低位高位字节存在高位如0X123456内存中存放为56 34 12如Intel为了解决不同字节序的计算机之间传输数据的问题约定采用网络字节序大端序 主机字节序与网络字节序之间的转换 uint16_t htons(uint16_t hostshort); uint32_t htonl(uint32_t hostlong); uint16_t ntohs(uint16_t netshort); uint32_t ntohl(uint32_t netlong);4. sockaddr 结构体 存放协议族、端口和地址信息 struct sockaddr {unsigned short sa_family; // 协议族unsigned char sa_data[14]; // 14字节的端口和地址 };5. sockaddr_in 结构体 sockaddr结构体为了统一地址结构的表示方法统一接口函数但是操作不方便所以定义了等价的sockaddr_in结构体其大小与sockaddr相同可以强制转换为sockaddr struct in_addr {unsigned int s_addr; // IP地址大端序 };struct sockaddr_in {unsigned short sa_family; // 协议族unsigned short sin_port; // 端口号大端序struct in_addr sin_addr; // IP地址32位只适用于IPV4unsigned char sin_zero[8]; // 未使用为了与sockaddr大小相同 };之所以搞两个结构体可能是因为sockaddr可以用于IPV4后续也可以用于IPV6sockaddr_in是为了IPV4操作方便根据sin_addr存放的位数看。 6. 字符串IP与大端序IP的转换 typedef unsigned int in_addr_t; // 大端序IP地址// 将字符串格式的IP转换为大端序IP in_addr_t inet_addr(const char* cp); int inet_aton(const char* cp, struct in_addr* inp);// 将大端序IP转换为字符串格式IP char *inet_ntoa(struct in_addr in);实现简单的客户端 功能需求能够与服务端建立连接并发送、接收三次信息 #include iostream #include sys/types.h #include sys/socket.h #include cstring #include cstdio #include cstdlib #include unistd.h #include arpa/inet.h #include netdb.husing namespace std;int main(int argc, char** argv) {if (argc 3) {cout Error: you should enter server ip and port endl;cout Usage: ./djclient [IP ADDR] [PORT] endl;return 0;}int client_socket socket(AF_INET, SOCK_STREAM, 0);struct sockaddr_in server_addr;memset(server_addr, 0, sizeof(server_addr));server_addr.sin_family AF_INET;server_addr.sin_port htons(atoi(argv[2]));struct hostent* server_ip gethostbyname(argv[1]); // gethostname支持域名、主机名、字符串if (server_ip nullptr) {cout gethostbyname failed argv[1] endl;close(client_socket);return -1;}memcpy(server_addr.sin_addr, server_ip-h_addr, server_ip-h_length);int ret connect(client_socket, (struct sockaddr*)server_addr, sizeof(server_addr));if (ret -1) {cout connect failed. endl;close(client_socket);return -1;}char buf[1024] {0};// 接受发送消息3次for (int i 0; i 3; i) {memset(buf, 0, sizeof(buf));sprintf(buf, 这是发送的第%d个消息., i);ret write(client_socket, buf, strlen(buf));if (ret -1) {cout ERROR: 第 i 次发送信息失败 endl;break;}cout INFO: 第 i 次发送了 ret 个字节内容为 buf endl;memset(buf, 0, sizeof(buf));ret read(client_socket, buf, sizeof(buf) - 1);if (ret -1) {cout ERROR: 第 i 次接收信息失败 endl;break;}if (ret 0) {}cout INFO: 第 i 次接收了 ret 个字节内容为 buf endl;}close(client_socket);cout 通信结束 endl;return 0; }实现简单的服务端 功能需求实现简单的服务端接收客户端连接打印接收和连接信息 #include iostream #include sys/types.h #include sys/socket.h #include cstring #include unistd.h #include arpa/inet.husing namespace std;int main(int argc, char** argv) {int server_socket socket(AF_INET, SOCK_STREAM, 0);struct sockaddr_in server_addr;memset(server_addr, 0, sizeof(server_addr));server_addr.sin_family AF_INET;server_addr.sin_addr.s_addr htonl(INADDR_ANY);server_addr.sin_port htons(3560);int ret bind(server_socket, (struct sockaddr*)server_addr, sizeof(server_addr));if (ret ! 0) {cout ERROR: bind() 执行失败!!! endl;close(server_socket);return -1;}ret listen(server_socket, 5);if (ret ! 0) {cout ERROR: listen() 执行失败!!! endl;close(server_socket);return -1;}// int accept(int sockfd, struct sockaddr *cliaddr, socklen_t *addrlen); struct sockaddr_in cliaddr;memset(cliaddr, 0, sizeof(cliaddr));socklen_t addrlen sizeof(cliaddr);cout 等待连接... endl;int client_socket accept(server_socket, (struct sockaddr*)cliaddr, addrlen);char* client_ip inet_ntoa(cliaddr.sin_addr);cout INFO: 来自客户端的连接为 client_ip : ntohs(cliaddr.sin_port) endl;char buf[1024] {0};int i 0;while (true) {memset(buf, 0, sizeof(buf));ret read(client_socket, buf, sizeof(buf) - 1);if (ret -1) {cout ERROR: 第 i 次接收信息失败 endl;break;}if (ret 0) {cout INFO: 客户端断开连接 endl;break;}cout INFO: 第 i 次接收了 ret 个字节内容为 buf endl;strcpy(buf, success!!!);ret write(client_socket, buf, strlen(buf));if (ret -1) {cout ERROR: 第 i 次发送信息失败 endl;break;}cout INFO: 第 i 次发送了 ret 个字节内容为 buf endl;i;}close(client_socket);close(server_socket);return 0; }执行结果如下所示 # 客户端 [rootlocalhost code]# g djclient.cpp -o djclient [rootlocalhost code]# ./djclient Error: you should enter server ip and port Usage: ./djclient [IP ADDR] [PORT] [rootlocalhost code]# ./djclient 192.168.66.124 3560 INFO: 第 0 次发送了 29 个字节内容为这是发送的第0个消息. INFO: 第 0 次接收了 10 个字节内容为success!!! INFO: 第 1 次发送了 29 个字节内容为这是发送的第1个消息. INFO: 第 1 次接收了 10 个字节内容为success!!! INFO: 第 2 次发送了 29 个字节内容为这是发送的第2个消息. INFO: 第 2 次接收了 10 个字节内容为success!!! 通信结束 [rootlocalhost code]# # 服务端 [rootcentos server]# g djserver.cpp -o djserver [rootcentos server]# ./djserver 等待连接... INFO: 来自客户端的连接为192.168.91.153:14098 INFO: 第 0 次接收了 29 个字节内容为这是发送的第0个消息. INFO: 第 0 次发送了 10 个字节内容为success!!! INFO: 第 1 次接收了 29 个字节内容为这是发送的第1个消息. INFO: 第 1 次发送了 10 个字节内容为success!!! INFO: 第 2 次接收了 29 个字节内容为这是发送的第2个消息. INFO: 第 2 次发送了 10 个字节内容为success!!! INFO: 客户端断开连接 [rootcentos server]# 总结 C实现客户端/服务端通信一基于socket通信的基本API实现了客户端/服务端的基本通信框架。
http://www.pierceye.com/news/606691/

相关文章:

  • 公司的网站建设做什么费用尚海整装公司电话
  • 贵阳市建设厅官方网站官方网站开发需要几个技术人员
  • 电子政务网站模版科学规划网页的做法是
  • 昆明网站建设猫咪科技抚州网站建设
  • 山东网站建设运行工资做的很漂亮的网站
  • 网站免费源码大全无用下载淘宝支持做微交易网站吗
  • 常用网站推广方法石家庄营销网站建设价格
  • 网站界面设计的基本原则是什么论坛做视频网站
  • 学校网站总务建设怎么做网站流量竞品分析
  • 企业网站建设所需要的资料网站备案 icp备案
  • 商城类网站方案中国风 wordpress主题
  • 网站更换服务器教程南阳网站推广招聘
  • 海尔网站的建设目标四库一平台个人信息查询
  • 佛山市建设网站公司网站手机端和电脑端
  • 属于c2c的网站是重庆化工建设信息网站
  • 高端大气网站推荐网赌网站建设多少钱
  • 宁波网站关键词优化排名网站修改图片怎么做
  • 苏州网站建设案例购买网站域名
  • 自己做剧本网站重庆建设工业公司官网
  • 中国网站建设中心建网站和开发软件哪个难
  • 优化网站被百度屏阿里云网站备案核验单
  • 肇庆做网站哪家好河北建设工程信息网正规网站
  • 怎么做展示网站公司网站管理规定
  • 娄底网站制作备案号查询平台
  • 青岛网站排名方案优化的定义
  • 微网站开发外包杨浦做网站公司
  • 网站推广服务包括哪些个人简历网官网免费
  • 铜仁住房和城乡建设局网站安贞做网站公司
  • 做网站客户尾款老不给怎么办东莞市研发网站建设品牌
  • 文化网站策划wordpress iscategory