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

鲜花网站建设的项目介绍网页制作的基本步骤共七步

鲜花网站建设的项目介绍,网页制作的基本步骤共七步,免费问题咨询,百度seo入驻1 UNIX 域流式套接字 本地地址 struct sockaddr_un {unsigned short sun_family; /* 协议类型 */char sun_path[108]; /* 套接字文件路径 */ };UNIX 域流式套接字的用法和 TCP 套接字基本一致,区别在于使用的协议和地址不同 UNIX 域流式套接字服务器端…

1 UNIX 域流式套接字

本地地址

struct sockaddr_un {unsigned short sun_family;    /* 协议类型 */char sun_path[108];        /* 套接字文件路径 */
};

UNIX 域流式套接字的用法和 TCP 套接字基本一致,区别在于使用的协议和地址不同

UNIX 域流式套接字服务器端流程如下:

(1)创建 UNIX 域流式套接字。

(2)绑定本地地址(套接字文件)。

(3)设置监听模式。

(4)接收客户端的连接请求。

(5)发送/接收数据。

补充:在linux中输入man bind,下方有流套接字示例代码

#include <sys/socket.h>
#include <sys/un.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>#define MY_SOCK_PATH "/tmp/my_sock_file"
#define LISTEN_BACKLOG 50#define handle_error(msg) \do { perror(msg); exit(EXIT_FAILURE); } while (0)int main(int argc, char *argv[])
{int sfd, cfd;struct sockaddr_un my_addr, peer_addr;socklen_t peer_addr_size;char buf[BUFSIZ] = {};sfd = socket(AF_UNIX, SOCK_STREAM, 0);if (sfd == -1)handle_error("socket");memset(&my_addr, 0, sizeof(struct sockaddr_un));my_addr.sun_family = AF_UNIX;strncpy(my_addr.sun_path, MY_SOCK_PATH,sizeof(my_addr.sun_path) - 1);if (bind(sfd, (struct sockaddr *) &my_addr,sizeof(struct sockaddr_un)) == -1)handle_error("bind");if (listen(sfd, LISTEN_BACKLOG) == -1)handle_error("listen");peer_addr_size = sizeof(struct sockaddr_un);cfd = accept(sfd, (struct sockaddr *) &peer_addr,&peer_addr_size);if (cfd == -1)handle_error("accept");recv(cfd, buf, BUFSIZ, 0);printf("%s\n", buf);close(cfd);close(sfd);remove(MY_SOCK_PATH);return 0;
}

UNIX 域流式套接字客户端流程如下。

(1)创建 UNIX 域流式套接字。

(2)指定服务器端地址(套接字文件)。

(3)建立连接。

(4)发送/接收数据。

#include <sys/socket.h>
#include <sys/un.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>#define MY_SOCK_PATH "/tmp/my_sock_file"#define handle_error(msg) \do { perror(msg); exit(EXIT_FAILURE); } while (0)int main(int argc, char *argv[])
{int fd;struct sockaddr_un peer_addr;char buf[BUFSIZ] = {"Hello World!"};fd = socket(AF_UNIX, SOCK_STREAM, 0);if (fd == -1)handle_error("socket");memset(&peer_addr, 0, sizeof(struct sockaddr_un));peer_addr.sun_family = AF_UNIX;strncpy(peer_addr.sun_path, MY_SOCK_PATH,sizeof(peer_addr.sun_path) - 1);if (connect(fd, (struct sockaddr *) &peer_addr,sizeof(struct sockaddr_un)) == -1)handle_error("connect");printf("%s\n",buf);send(fd, buf, strlen(buf), 0);close(fd);return 0;
}

2 UNIX 域数据报套接字

UNIX 域用户数据报套接字的流程可参考 UDP 套接字

UNIX 域流式套接字服务器端流程如下:

(1)创建 UNIX 域流式套接字。

(2)绑定本地地址(套接字文件)。

(3)发送/接收数据。

服务端

#include <sys/socket.h>
#include <sys/un.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>#define MY_SOCK_PATH "/tmp/my_sock_file"
#define handle_error(msg) \do { perror(msg); exit(EXIT_FAILURE); } while (0)int main(int argc, char *argv[])
{int fd;struct sockaddr_un my_addr, peer_addr;socklen_t peer_addr_size;char buf[BUFSIZ] = {};fd = socket(AF_UNIX, SOCK_DGRAM, 0);if (fd == -1)handle_error("socket");memset(&my_addr, 0, sizeof(struct sockaddr_un));my_addr.sun_family = AF_UNIX;strncpy(my_addr.sun_path, MY_SOCK_PATH,sizeof(my_addr.sun_path) - 1);if (bind(fd, (struct sockaddr *) &my_addr,sizeof(struct sockaddr_un)) == -1)handle_error("bind");peer_addr_size = sizeof(struct sockaddr_un);recvfrom(fd, buf, BUFSIZ, 0, (struct sockaddr *) &peer_addr,&peer_addr_size);printf("%s\n",buf);close(fd);remove(MY_SOCK_PATH);return 0;
}

客户端 

#include <sys/socket.h>
#include <sys/un.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>#define MY_SOCK_PATH "/tmp/my_sock_file"
#define handle_error(msg) \do { perror(msg); exit(EXIT_FAILURE); } while (0)int main(int argc, char *argv[])
{int fd;struct sockaddr_un peer_addr;socklen_t peer_addr_size;char buf[BUFSIZ] = {"Hello World!"};fd = socket(AF_UNIX, SOCK_DGRAM, 0);if (fd == -1)handle_error("socket");memset(&peer_addr, 0, sizeof(struct sockaddr_un));peer_addr.sun_family = AF_UNIX;strncpy(peer_addr.sun_path, MY_SOCK_PATH,sizeof(peer_addr.sun_path) - 1);peer_addr_size = sizeof(struct sockaddr_un);printf("%s\n", buf);sendto(fd, buf, strlen(buf), 0, (struct sockaddr *) &peer_addr,peer_addr_size);close(fd);remove(MY_SOCK_PATH);return 0;
}

http://www.yayakq.cn/news/213936/

相关文章:

  • wordpress企业网站主题东莞网站建设报价方案
  • 嘉兴网站推广企业wordpress哪个模板好用
  • 山东省住房建设厅网站首页网站设计建设合同是
  • 如何做网站的链接结构物理组简介 网站建设
  • seo的培训网站哪里好单页网站建设教程
  • 网站建站网站设计顺德网站建设价位
  • 现在1做啥网站流量大国内疫苗接种率
  • 80s网站建设工作室注册人力资源公司需要什么手续
  • 合肥百度网站排名优化中国印花图案设计网站
  • 学做网站要什么学历园林景观设计公司的培训手册模板
  • 清河网站建设费用怎样做一个网站平台
  • 做ipad的网站尺寸是多少钱兰州中川国际机场电话
  • o2o网站策划前端 网站开发 常见功能实现
  • 建设银行人力资源系统网站怎么进广西网站建设建议
  • 茂名平安建设网站设计制作软件
  • 西安定制网站龙岗网站设计公司价格
  • 成都网站建设公司盈利吗网站建设跟推广评价指标有什么关系
  • 中原免费网站建设企业网站制作哪家好
  • 园岭中小网站建设网站页面设计优化方案
  • 快速做彩平图得网站建设一个小说网站多少钱
  • 网站建设电子商务课总结和体会月季花app是哪家公司开发的
  • 套模板的网站多少钱在哪里找人做公司网站
  • 苏州门户网站天涯论坛网站建设
  • 网站如何做h5动态页面商贸城网站建设方案
  • 惠东做网站公司怎么注册微网站吗
  • 网站建立吸引人的策划活动网站做内嵌
  • 网站备案如何注销校园网站建设目标
  • 做网站需要api吗做的好的网站着陆页
  • 大连城市建设集团网站北京值得去的商场
  • 东莞网站设计定制开发那个网站教我做美食最好