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

做网站市场怎么做私人网站

做网站市场,怎么做私人网站,常州企业网站建设,深圳专业网站建本地套接字 利用cs模型实现本地套接字完成进程间通信 对比网络编程TCP C/S模型,注意以下几点 1、int socket(int domain, int type, int protocol); domain-->AF_INET改为AF_UNIX , type都可写SOCK_STREAM/SOCK_DGRAM2、地址结构 sockaddr_in -->sockadd…

本地套接字

利用cs模型实现本地套接字完成进程间通信

对比网络编程TCP C/S模型,注意以下几点

1、int socket(int domain, int type, int protocol);   domain-->AF_INET改为AF_UNIX ,
type都可写SOCK_STREAM/SOCK_DGRAM2、地址结构 sockaddr_in -->sockaddr_unstruct sockaddr_un serv_addr;serv_addr.sun_family = AF_UNIXstrcpy(serv_addr.sun_path , "serv.socket")len = offsetof(struct sockaddr_un , sun_path) + strlen("serv.socket")
offsetof(struct sockaddr_un , sun_path)求出来就是2,首地址偏移3、bind(sockfd , (struct sockaddr*) &serv_addr , len);
bind()函数调用成功,会创建一个sockfd,因此为了保证bind成功,通常在bind之前使用unlink("serv.socket");4、客户端不能依赖隐式绑定,并且应该在通信建立过程中,初始化2个地址结构
1)、client_addr--->bind()
2)、serv_addr--->connect()

本地套接字实现进程间通信服务器模型 

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<pthread.h>
#include<sys/socket.h>
#include<arpa/inet.h>
#include<sys/un.h>
#include<ctype.h>
#include<stddef.h>
#define SERV_ADDR "serv.socket"
int main(int argc , char *argv[])
{struct sockaddr_un serv_addr , clit_addr;int sockfd , cfd;char buf[BUFSIZ];int i , n , len;sockfd = socket(AF_UNIX , SOCK_STREAM , 0);serv_addr.sun_family = AF_UNIX;strcpy(serv_addr.sun_path , SERV_ADDR);len = offsetof(struct sockaddr_un , sun_path) + strlen(SERV_ADDR);unlink(SERV_ADDR);bind(sockfd , (struct sockaddr*)&serv_addr , len);listen(sockfd , 128);printf("Accepting connections....\n");while(1){len = sizeof(clit_addr);cfd = accept(sockfd , (struct sockaddr*)&clit_addr , (socklen_t*)&len);len -= offsetof(struct sockaddr_un , sun_path);clit_addr.sun_path[len] = '\0';printf("client bind filename %s\n" , clit_addr.sun_path);while((n = read(cfd , buf , sizeof(buf)))>0){if(n > 0){for(i = 0 ; i < n ; i++)buf[i] = toupper(buf[i]);}write(cfd , buf , n);write(STDOUT_FILENO , buf , n);}}close(sockfd);return 0 ;
}

本地套接字实现进程间通信客户端模型 

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<pthread.h>
#include<sys/socket.h>
#include<arpa/inet.h>
#include<sys/un.h>
#include<stddef.h>
#define SERV_PORT 9004#define SERV_ADDR "serv.socket"
#define CLIT_ADDR "clit.socket"void sys_err(char*s)
{perror(s);exit(1);
}int main(int argc , char *argv[])
{int n , ret , cfd , len;char buf[BUFSIZ];struct sockaddr_un serv_addr , clit_addr;cfd = socket(AF_UNIX , SOCK_STREAM , 0);clit_addr.sun_family = AF_UNIX;strcpy(clit_addr.sun_path , CLIT_ADDR);len = offsetof(struct sockaddr_un , sun_path) + strlen(CLIT_ADDR);unlink(CLIT_ADDR);ret = bind(cfd , (struct sockaddr*)&clit_addr , len);if(ret == -1)sys_err("bind error");serv_addr.sun_family = AF_UNIX;strcpy(serv_addr.sun_path , SERV_ADDR);len = offsetof(struct sockaddr_un , sun_path) + strlen(SERV_ADDR);if((connect(cfd , (struct sockaddr*)&serv_addr , (socklen_t)len))== -1)sys_err("connect error");while(fgets(buf , sizeof(buf) , stdin) != NULL ){n = write(cfd , buf , strlen(buf));if(n == -1)sys_err("write error");len = read(cfd , buf , (sizeof(buf)));if(n == -1)sys_err("read error");write(STDOUT_FILENO , buf , len);}close(cfd);return 0 ;
}

这里要注意其和网络通信中的区别,在客户端中不仅要绑定且初始化自己的地址结构,也要初始化服务器端的地址结构,不能依赖隐式绑定。

还需要注意,在这个模型中bind之前都需要进行unlink操作。

http://www.dtcms.com/wzjs/207444.html

相关文章:

  • 网站链接维护怎么做百度竞价优缺点
  • 韩国男女做游戏视频网站网站外链推广平台
  • 东营专业网站建设宣传推广方案范文
  • 群辉nas 做网站英语培训机构
  • 国外网站制作有哪些百度订单售后电话
  • 政元软件做网站深圳市文化广电旅游体育局
  • 看会员视频的网站开发网站建设需求模板
  • 广州企业网站排名优化营商环境的措施建议
  • b2b电子商务网站交易流程网络推广求职招聘交流群
  • 定安网站建设优化关键词快速排名
  • 广州知名网站建设有哪些无锡seo关键词排名
  • 西宁微网站建设多少钱竞价排名采用什么计费方式
  • 昆明网站建设公司电话同城推广平台
  • 网站建设有几种方式域名注册商有哪些
  • 馆陶企业做网站推广seo怎么搞
  • flash 如何做游戏下载网站公关公司排行榜
  • 锦州网站制作公司游戏广告推广平台
  • 做淘宝优惠网站网站建站模板
  • 怎么做伪静态网站百度网站名称及网址
  • 代刷推广网站新品推广策划方案
  • 长沙网页推广价格公司seo培训价格
  • 网站视频背景怎么做白帽seo是什么
  • 哪个网站可以接广告做百度建站云南服务中心
  • 黑白高端网站建设网上做广告宣传
  • 彩票代理平台高级seo优化招聘
  • 网站建设业务介绍域名收录提交入口
  • 网站建设与管理期中考上海seo优化培训机构
  • 怎样给网站做后台b2b网站免费推广平台
  • 网站在线留言系统竞价推广是什么工作
  • 网站建设职位关键词搜索排名公司