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

网站分页符素材企业网站建设方案如何写

网站分页符素材,企业网站建设方案如何写,长江商学院 网站建设,电商网站开发模板实验目标: 1 实现基于流的unix域套接字通信cs模型 2 实现基于数据报的unix域套接字通信cs模型 3 可以观察到CS两端的完整启动退出流程,为了实现这一目标仅进行一次通信 实验心得: 1 使用unlink避免地址冲突 清理资源 2 传统udp在首次sendto时系统临时分配端口,在套接字关…实验目标: 1 实现基于流的unix域套接字通信cs模型 2 实现基于数据报的unix域套接字通信cs模型 3 可以观察到CS两端的完整启动退出流程,为了实现这一目标仅进行一次通信 实验心得: 1 使用unlink避免地址冲突 清理资源 2 传统udp在首次sendto时系统临时分配端口,在套接字关闭|程序终止|显式解绑时端口生命周期结束,而unix域套接字则需要手动绑定,否则客户端无法收到服务器的回信 3 复制文件路径时,sun_path的长度无法更改,容易出现越界的情况 基于流: #define _GNU_SOURCE #include stdio.h #include sys/socket.h #include sys/un.h #include netinet/in.h #include sys/epoll.h #include string.h #include unistd.h#define SOCK_PATH /home/u22/socket/addr1 // 服务端 int main() {int server_sockfd, client_sockfd;struct sockaddr_un server_sockaddr, client_sockaddr;memset(server_sockaddr, 0, sizeof(server_sockaddr));memset(client_sockaddr, 0, sizeof(client_sockaddr));socklen_t client_sockaddr_len sizeof(client_sockaddr);ssize_t send_bytes, recv_bytes;char send_buf[1024] server say : How can I help you today ?;char recv_buf[1024] {0};// unix域套接字 使用流式传输,不能叫TCPserver_sockfd socket(AF_UNIX, SOCK_STREAM, 0);if (server_sockfd -1){perror(socket);}server_sockaddr.sun_family AF_UNIX;strcpy(server_sockaddr.sun_path, SOCK_PATH);// 为什么要删除这个文件?因为再次启动代码将无法访问这个文件unlink(SOCK_PATH);if ((bind(server_sockfd, (struct sockaddr *)server_sockaddr, sizeof(server_sockaddr))) -1){perror(bind);}if (listen(server_sockfd, 16) -1){perror(listen);}printf(waiting for connect...\n);// accept返回后将收到客户端地址信息client_sockfd accept(server_sockfd, (struct sockaddr *)client_sockaddr, client_sockaddr_len);if (client_sockfd -1){perror(accept);}// 同tcp一样 recv send使用accept返回的socket通信recv_bytes recv(client_sockfd, recv_buf, sizeof(recv_buf), 0);if (recv_bytes -1){perror(recv);}if (recv_bytes 0){printf(%s\n, recv_buf);}send_bytes send(client_sockfd, send_buf, strlen(send_buf), 0);if (send_bytes -1){perror(send);}if (send_bytes 0){printf(%s\n, send_buf);}close(client_sockfd);close(server_sockfd);printf(server close\n);//用完了 还要删一遍unlink(SOCK_PATH);return 0; }#define _GNU_SOURCE #include stdio.h #include sys/socket.h #include sys/un.h #include netinet/in.h #include sys/epoll.h #include string.h #include unistd.h#define SOCK_PATH /home/u22/socket/addr1 //客户端 int main() {int client_sockfd;struct sockaddr_un server_sockaddr;memset(server_sockaddr, 0, sizeof(server_sockaddr));ssize_t send_bytes, recv_bytes;char send_buf[1024] client say : hello server !;char recv_buf[1024] {0};//创建基于流的unix域套接字client_sockfd socket(AF_UNIX, SOCK_STREAM, 0);if (client_sockfd -1){perror(socket);}server_sockaddr.sun_family AF_UNIX;strcpy(server_sockaddr.sun_path, SOCK_PATH);//尝试连接serverprintf(connect server...\n);if ((connect(client_sockfd, (struct sockaddr *)server_sockaddr, sizeof(server_sockaddr))) -1){perror(connect);}//与TCP一样 使用socket()返回的socket通信send_bytes send(client_sockfd, send_buf, strlen(send_buf), 0);if (send_bytes -1){perror(send);}printf(%s\n, send_buf);recv_bytes recv(client_sockfd, recv_buf, sizeof(recv_buf), 0);if (recv_bytes -1){perror(recv);}printf(%s\n, recv_buf);close(client_sockfd);printf(client close\n);return 0; }基于数据报: #define _GNU_SOURCE #include stdio.h #include sys/socket.h #include sys/un.h #include netinet/in.h #include sys/epoll.h #include string.h #include unistd.h#define SOCK_PATH /home/u22/socket/addr2int main() {int server_sockfd;struct sockaddr_un server_sockaddr, client_sockaddr;memset(server_sockaddr, 0, sizeof(server_sockaddr));memset(client_sockaddr, 0, sizeof(client_sockaddr));socklen_t client_sockaddr_len sizeof(client_sockaddr);ssize_t send_bytes, recv_bytes;char send_buf[1024] server say : How can I help you today ?;char recv_buf[1024] {0};// unix域套接字 使用数据报传输,不能叫UDPserver_sockfd socket(AF_UNIX, SOCK_DGRAM, 0);if (server_sockfd -1){perror(socket);}// 无法再次访问此文件,必须删除unlink(SOCK_PATH);server_sockaddr.sun_family AF_UNIX;// 容易越界,本系统为108字节strncpy(server_sockaddr.sun_path, SOCK_PATH, sizeof(server_sockaddr.sun_path));// 不bind,peer使用sendto也可以正常发送,但是本endpoint无法接收if ((bind(server_sockfd, (struct sockaddr *)server_sockaddr, sizeof(server_sockaddr))) -1){perror(bind);}printf(waiting for recv...\n);// 接收的客户端地址信息存在client_sockaddr中,供sendto使用recv_bytes recvfrom(server_sockfd, recv_buf, sizeof(recv_buf),0, (struct sockaddr *)client_sockaddr, client_sockaddr_len);if (recv_bytes -1){perror(recv);}if (recv_bytes 0){printf(%s\n, recv_buf);}send_bytes sendto(server_sockfd, send_buf, strlen(send_buf),0, (struct sockaddr *)client_sockaddr, client_sockaddr_len);if (send_bytes -1){perror(send);}if (send_bytes 0){printf(%s\n, send_buf);}close(server_sockfd);printf(server close\n);// 用完删除SOCK_PATH这个文件unlink(SOCK_PATH);return 0; }#define _GNU_SOURCE #include stdio.h #include sys/socket.h #include sys/un.h #include netinet/in.h #include sys/epoll.h #include string.h #include unistd.h // 客户端使用的socket文件 #define SOCK_PATH_C /home/u22/socket/addr3 // 服务器使用的socket文件 #define SOCK_PATH_S /home/u22/socket/addr2 // 客户端 int main() {int client_sockfd;struct sockaddr_un server_sockaddr, client_sockaddr;memset(server_sockaddr, 0, sizeof(server_sockaddr));memset(client_sockaddr, 0, sizeof(client_sockaddr));socklen_t server_sockaddr_len sizeof(server_sockaddr);ssize_t send_bytes, recv_bytes;char send_buf[1024] client say : hello server !;char recv_buf[1024] {0};// 基于数据报的unix域套接字client_sockfd socket(AF_UNIX, SOCK_DGRAM, 0);if (client_sockfd -1){perror(socket);}// 必须删除,否则下次不让用unlink(SOCK_PATH_C);client_sockaddr.sun_family AF_UNIX;// 容易越界,本系统为108strncpy(client_sockaddr.sun_path, SOCK_PATH_C, sizeof(client_sockaddr.sun_path));// 传统udp在首次sendto时系统临时分配端口,在套接字关闭|程序终止|显式解绑时端口生命周期结束// 而unix域套接字则需要手动绑定if ((bind(client_sockfd, (struct sockaddr *)client_sockaddr, sizeof(client_sockaddr))) -1){perror(bind);}server_sockaddr.sun_family AF_UNIX;// 容易越界,本系统为108strncpy(server_sockaddr.sun_path, SOCK_PATH_S, sizeof(server_sockaddr.sun_path));printf(send message\n);// 向服务器发送信息,由server_sockaddr指定地址send_bytes sendto(client_sockfd, send_buf, strlen(send_buf),0, (struct sockaddr *)server_sockaddr, server_sockaddr_len);if (send_bytes -1){perror(send);}if (send_bytes 0){printf(%s\n, send_buf);}// 两个null是服务器的地址信息和长度,不需要则设为nullrecv_bytes recvfrom(client_sockfd, recv_buf, sizeof(recv_buf),0, NULL, NULL);if (recv_bytes -1){perror(recv);}if (recv_bytes 0){printf(%s\n, recv_buf);}close(client_sockfd);printf(client close\n);// 用完必须删除文件unlink(SOCK_PATH_C);return 0; }
http://www.zqtcl.cn/news/484081/

相关文章:

  • 建筑公司查询网站网站开发 系统需求文档
  • 温州做网站的公司有哪些宝塔搭建wordpress主机地址
  • 重庆商务网站建设南昌新力中心 nanchang sinic center
  • 潍坊建设厅官方网站店铺网络营销策划方案
  • 东营聊城网站建设博客论坛用wordpress
  • 哈尔滨中国建设银行网站首页seo快速入门教程
  • 网站建设项目环境影响评价目录南宁网站建设索王道下拉
  • 广州富邦物流网站建设南宁住房和城乡建设部网站
  • asp.net 公司网站全面的移动网站建设
  • 中国空间站官网app下载平台有哪些
  • 做外贸网站报价单做网站需要什么证件吗
  • 网站可以做视频链接东红物流网站建设规划书
  • 自己的网站网站免费部署
  • 广州专业的网站建设公司镇海seo关键词优化费用
  • 网站建设英文字体格式网络技术培训内容
  • 郑州公司网站设计在西宁做网站可以吗
  • 做最好的言情网站南通优普营销网站建设
  • 毕业设计网站可以做什么辽宁省建设厅网站更新
  • 同城信息网站建设牡丹江网站推广
  • 四川省城乡住房建设部网站首页商丘网站制作公司一二三网络推广
  • asp网站开发全程视频免费发布招聘信息平台
  • 机械网站建设开发网站如何做收录排行
  • 成都市学校网站建设怎样做网站二维码
  • 网站建设企业电话在线照片处理编辑器
  • 长沙建设网站企业wordpress 亲子模板下载
  • 济南seo整站优化价格织梦网站做404页面
  • 石家庄做标书的网站如何选取网站关键词
  • 摄影作品网站推荐wordpress用插件注册
  • pc端兼手机端网站模板中国网站 服务器
  • 江宁区建设工程局网站做网站满屏的照片尺寸是多少