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

网站建设发帖论坛社区wordpress文本编辑增强

网站建设发帖论坛社区,wordpress文本编辑增强,网站界面设计技巧,做物流百度网站一、域套接字的概念 1.只能做一台主机内的进程间通信#xff0c;协议族#xff08;地址族#xff09;指定为#xff1a;AF_UNIX AF_LOCAL 2.bsp-lcd#xff1a; s类型文件#xff0c;就是域套接字 3.如果客户端不手动绑定#xff0c;则操作系统不会创建一个套接字文件…一、域套接字的概念 1.只能做一台主机内的进程间通信协议族地址族指定为AF_UNIX AF_LOCAL 2.bsp-lcd s类型文件就是域套接字 3.如果客户端不手动绑定则操作系统不会创建一个套接字文件给客户端自动绑定的。 二、域套接字的函数使用 1socket 功能在内核空间中创建套接字文件接收缓冲区发送缓冲区并返回该套接字文件的文件描述符到用户空间 原型 #include sys/types.h /* See NOTES */ #include sys/socket.h int socket(int domain, int type, int protocol);参数 参数int domain协议族地址族;Name Purpose Man pageAF_UNIX, AF_LOCAL Local communication unix(7)int type: 套接字类型 SOCK_STREAM字节流式套接字流式套接字----TCP协议SOCK_DGRAM 数据报式套接字报式套接字----UDP协议SOCK_RAW原始套接字该套接字使用的协议需要在第三个参数指定;int protocol指定协议默认协议填0TCP协议: IPPROTO_TCP IPPROTO_UDP返回值 0 , 成功返回套接字文件描述符; -1, 失败更新errno; 2bind 功能将地址信息绑定到套接字文件描述符上 原型 #include sys/types.h /* See NOTES */ #include sys/socket.h int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen); 参数 int sockfd指定要将地址信息绑定到哪个套接字文件描述符上; struct sockaddr *addr通用地址信息结构体真实的地址信息结构体根据地址族指定.该结构体中需要填充上IP和端口由bind函数绑定到套接字上。 AF_UNIX : man 7 unix struct sockaddr_un {sa_family_t sun_family; /* AF_UNIX */ 必须填AF_UNIXchar sun_path[108]; /* pathname */ 套接字文件路径必须事 先不存在由bind函数生成}; socklen_t addrlen真实的地址信息结构体的长度sizeof(struct sockaddr_un); 返回值 成功返回0; 失败返回-1更新errno; 3access 功能判断文件是否存在或者文件是否有某种权限 4unlink 功能删除文件的硬链接 三、流式域套接字 1UNIX TCP服务器 #include stdio.h #include sys/types.h #include sys/socket.h #include arpa/inet.h #include netinet/in.h #include unistd.h #include string.h #include sys/un.h#define ERR_MSG(msg) do{\fprintf(stderr, __%d__ , __LINE__);\perror(msg);\ }while(0)int main(int argc, const char *argv[]) {//创建流式套接字int sfd socket(AF_UNIX, SOCK_STREAM, 0);if(sfd 0){ERR_MSG(socket);return -1;}//判断域套接字文件是否存在if(access(./unix, F_OK) 0){//若存在则删除unlink(./unix);}//填充服务器的地址信息结构体。AF_UNIX: man 7 unixstruct sockaddr_un sun;sun.sun_family AF_UNIX; //必须填AF_UNIXstrcpy(sun.sun_path, ./unix); //套接字文件路径//绑定服务器的IP和端口---必须绑定if(bind(sfd, (struct sockaddr *)sun, sizeof(sun)) 0){ERR_MSG(bind);return -1;}printf(bind success\n);//将套接字设置为被动监听状态监听是否有客户端连接if(listen(sfd, 128) 0){ERR_MSG(listen);return -1;}printf(listen success\n);struct sockaddr_un cun; //存储客户端地址信息socklen_t addrlen sizeof(cun);//阻塞函数阻塞等待客户端连接成功; 从已完成连接的队列头中获取一个客户端信息生成一个新的文件描述符//这个新的文件描述符才是与客户端通信的文件描述符;int newfd accept(sfd, (struct sockaddr*)cun, addrlen);if(newfd 0){ERR_MSG(accept);return -1;}printf([%s] newfd%d 客户端连接成功\n, cun.sun_path, newfd);char buf[128] ;ssize_t res 0;while(1){bzero(buf, sizeof(buf));//接收数据res recv(newfd, buf, sizeof(buf), 0);if(res 0){ERR_MSG(recv);return -1;}else if(0 res){printf([%s] newfd%d 客户端下线\n, cun.sun_path, newfd);break;}printf([%s] newfd%d : %s\n, cun.sun_path, newfd, buf);//发送数据strcat(buf, *_*); //可以修改成从其他地方获取if(send(newfd, buf, sizeof(buf), 0) 0){ERR_MSG(send);return -1;}printf(发送成功\n);}close(newfd);//关闭文件描述符if(close(sfd) 0){ERR_MSG(close);return -1;}return 0; }2UNIX TCP 客户端 #include stdio.h #include sys/types.h #include sys/socket.h #include arpa/inet.h #include netinet/in.h #include unistd.h #include string.h #include sys/un.h#define ERR_MSG(msg) do{\fprintf(stderr, __%d__ , __LINE__);\perror(msg);\ }while(0)int main(int argc, const char *argv[]) {//创建流式套接字int cfd socket(AF_UNIX, SOCK_STREAM, 0);if(cfd 0){ERR_MSG(socket);return -1;}//填充客户端自身的地址信息结构体。AF_UNIX: man 7 unix//绑定客户端的地址信息---非必须绑定//如果客户端不手动绑定则操作系统不会创建一个套接字文件给客户端自动绑定的。//填充服务器的地址信息结构体给connect函数使用。//要连接哪个服务器就填充哪个服务器绑定的地址信息struct sockaddr_un sun;sun.sun_family AF_UNIX; //必须填AF_UNIXstrcpy(sun.sun_path, ./unix);//连接服务器if(connect(cfd, (struct sockaddr*)sun, sizeof(sun)) 0){ERR_MSG(connect);return -1;}printf(connect success\n);char buf[128] ;ssize_t res 0;while(1){bzero(buf, sizeof(buf));//发送数据printf(请输入 );fgets(buf, sizeof(buf), stdin);buf[strlen(buf)-1] 0;//对方接收多少个字节发送多少个字节if(send(cfd, buf, sizeof(buf), 0) 0){ERR_MSG(send);return -1;}printf(发送成功\n);bzero(buf, sizeof(buf));//接收数据 res recv(cfd, buf, sizeof(buf), 0);if(res 0){ERR_MSG(recv);return -1;}else if(0 res){printf(cfd%d 服务器下线\n, cfd);break;}printf(cfd%d : %s\n, cfd, buf);}//关闭文件描述符if(close(cfd) 0){ERR_MSG(close);return -1;}return 0; } 四、报式域套接字 1.报式域套接字的编程与网络报式套接字编程思路是一致的但是由于客户端不手动绑定的话操作系统不会自动创建一个套接字文件给客户端绑定 2.此时若服务器想给客户端回复信息会找不到客户端的地址信息。此时客户端是必须绑定的。 1UNIX UDP服务器 #include stdio.h #include sys/types.h #include sys/socket.h #include arpa/inet.h #include netinet/in.h #include unistd.h #include string.h #include sys/un.h#define ERR_MSG(msg) do{\fprintf(stderr, __%d__ , __LINE__);\perror(msg);\ }while(0)int main(int argc, const char *argv[]) {//创建报式套接字int sfd socket(AF_UNIX, SOCK_DGRAM, 0);if(sfd 0){ERR_MSG(socket);return -1; }printf(sfd %d\n, sfd);//判断文件是否存在//若存在则删除if(access(./unixSer, F_OK) 0){unlink(./unixSer);}//填充服务器的地址信息结构体 AF_UNIX: man 7 unixstruct sockaddr_un sun;sun.sun_family AF_UNIX;strcpy(sun.sun_path, ./unixSer);//绑定服务器的地址信息if(bind(sfd, (struct sockaddr*)sun, sizeof(sun)) 0){ERR_MSG(bind);return -1;}printf(bind success\n);struct sockaddr_un cun; //存储数据包是从谁哪里来的socklen_t addrlen sizeof(cun);char buf[128] ;while(1){bzero(buf, sizeof(buf));//接收数据//if(recvfrom(sfd, buf, sizeof(buf), 0, NULL, NULL) 0)if(recvfrom(sfd, buf, sizeof(buf), 0, (struct sockaddr*)cun, addrlen) 0){ERR_MSG(recvfrom);return -1;}printf([%s] : %s\n, cun.sun_path, buf);//发送数据 -- 谁发给我我发给谁strcat(buf, *_*);if(sendto(sfd, buf, sizeof(buf), 0, (struct sockaddr*)cun, sizeof(cun)) 0){ERR_MSG(sendto);return -1;}printf(sendto success\n);}//关闭套接字close(sfd);return 0; }2UNIX UDP客户端 #include stdio.h #include sys/types.h #include sys/socket.h #include arpa/inet.h #include netinet/in.h #include unistd.h #include string.h #include sys/un.h#define ERR_MSG(msg) do{\fprintf(stderr, __%d__ , __LINE__);\perror(msg);\ }while(0)int main(int argc, const char *argv[]) {if(argc 2){printf(请输入套接字文件路径名\n);return -1;}//创建报式套接字int cfd socket(AF_UNIX, SOCK_DGRAM, 0);if(cfd 0){ERR_MSG(socket);return -1;}printf(cfd %d\n, cfd);//绑定客户端的地址信息---》非必须绑定//如果客户端不手动绑定则操作系统不会创建一个套接字文件给客户端自动绑定的。//若服务器要给当前客户端回复信息则当前客户端必须要绑定//判断文件是否存在//若存在则删除if(access(argv[1], F_OK) 0){unlink(argv[1]);}//填充客户端的地址信息结构体给bind函数使用 struct sockaddr_un cun;cun.sun_family AF_UNIX;strcpy(cun.sun_path, argv[1]);if(bind(cfd, (struct sockaddr*)cun, sizeof(cun)) 0){ERR_MSG(bind);return -1;}printf(客户端绑定成功\n);//填充服务器的地址信息结构体给下面的sendto函数使用struct sockaddr_un sun;sun.sun_family AF_UNIX;strcpy(sun.sun_path, ./unixSer);struct sockaddr_un rcvaddr; //存储数据包是从谁哪里来的socklen_t addrlen sizeof(rcvaddr);char buf[128] ;while(1){bzero(buf, sizeof(buf));//发送数据 -- 给服务器printf(请输入 );fgets(buf, sizeof(buf), stdin);buf[strlen(buf)-1] 0;if(sendto(cfd, buf, sizeof(buf), 0, (struct sockaddr*)sun, sizeof(sun)) 0){ERR_MSG(sendto);return -1; }printf(sendto success\n);//接收数据if(recvfrom(cfd, buf, sizeof(buf), 0, (struct sockaddr*)rcvaddr, addrlen) 0){ERR_MSG(recvfrom);return -1;}printf([%s] : %s\n, rcvaddr.sun_path, buf);}//关闭套接字close(cfd);return 0; }
http://www.hkea.cn/news/14510805/

相关文章:

  • 国外网站推广如何做金山专业做网站
  • 长沙网络公司网站上海外贸学院现在是什么学校
  • 微网站的搭建用jsp做的网站首页
  • 崇信县门户网站首页电商商城网站开发框架
  • 网站建设与维护 实验报告心得wordpress 薄荷主题
  • 网站设计与网站开发是同时进行的求个网站没封的
  • 昆明云南微网站搭建哪家好附近装修公司电话号码
  • 网站开发可选择的方案湖南网站seo找行者seo
  • 网站自己做还是找人做云南网站开发软件
  • 柳州做网站去哪家公司好成都医疗网站建设
  • 做网站维护工作难吗自己建网站要什么
  • 我要建网站需要什么锤子网站cms版本
  • 什么网站做调查能赚钱市场调查 网站建设
  • 外贸做网站建设哪家好搭建视频播放网站
  • 张店网站制作北京网站推广营销服务电话
  • 不注册公司可以做网站吗软件开发流程八个步骤概要分析
  • 价格网站外贸那些网站好用
  • flashfxp发布网站北京市住房与城乡建设部网站
  • 电脑做网站空间网站哪个公司做的
  • 成都建立网站营销设计上海办公室设计装修公司
  • 电子政务门户网站建设汇报什么是软文营销
  • 哪些网站做的不好网站正在建设中的网页怎么做
  • 12306网站开始是谁开发的wordpress主题代码解读
  • 目前做系统比较好的网站dw做网站模版
  • 情公司做的网站长春seo服务
  • 公司网站空间怎么续费能看全世界地图的app
  • 做类似淘宝一样的网站百度给企业做网站吗
  • asp.net个人网站空间从哪些方面评价一个企业的网站建设
  • 高端网站建设怎么报名网站做联盟还赚钱吗
  • 招商加盟网站推广方案产品设计专业最好的大学