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

网站建设框架怎么做超级外链发布工具

网站建设框架怎么做,超级外链发布工具,西安网站公司建设,好的wordpress 教程最近写代码需要进程间socket通信,于是上网查了一些资料,自己动手写代码实现了一下,最后发现其实 socket 进程通信与网络通信使用的是统一套接口,只是地址结构与某些参数不同。 第一种实现方案:使用 “127.0.0.1” 客…

最近写代码需要进程间socket通信,于是上网查了一些资料,自己动手写代码实现了一下,最后发现其实 socket 进程通信与网络通信使用的是统一套接口,只是地址结构与某些参数不同。

第一种实现方案:使用 “127.0.0.1”

客户端程序

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <netinet/in.h>
#include <unistd.h>//#define UNIX_DOMAIN "/tmp/UNIX.domain"
#define DATELEN 1024int main(int argc, char *argv[])
{int GuiConnect_fd = -1;int iRet = -1;int iRecvLen = 0;int iSendLen = 0;char GuiSendBuf[DATELEN] = {0};char GuiRecvBuf[DATELEN] = {0};//static struct sockaddr_un ServAddr;struct sockaddr_in ServAddr;//creat unix socket//GuiConnect_fd = socket(PF_UNIX, SOCK_STREAM, 0);GuiConnect_fd = socket(AF_INET, SOCK_STREAM, 0);printf("== GuiConnect_fd = %d\n", GuiConnect_fd);if (GuiConnect_fd < 0){perror("cannot create communication socket");return 1;}//ServAddr.sun_family = AF_UNIX;//strncpy(ServAddr.sun_path, UNIX_DOMAIN, sizeof(ServAddr.sun_path) - 1);memset(&ServAddr, 0, sizeof(ServAddr));ServAddr.sin_family = AF_INET;ServAddr.sin_port = htons(5050);ServAddr.sin_addr.s_addr = inet_addr("127.0.0.1");//connect serveriRet = connect(GuiConnect_fd, (struct sockaddr*)&ServAddr, sizeof(ServAddr));if(-1 == iRet){perror("cannot connect to the server");close(GuiConnect_fd);return 1;}//receive and send messagememset(GuiRecvBuf, 0, DATELEN);printf("GUI Receie Msg from TDC\n");//iRecvLen = read(GuiConnect_fd, GuiRecvBuf, sizeof(GuiRecvBuf));iRecvLen = recv(GuiConnect_fd, GuiRecvBuf, DATELEN, 0);printf("receive message from server (%d) :%s\n", iRecvLen, GuiRecvBuf);printf("GUI Send msg to TDC server:\n");memset(GuiSendBuf, 0, DATELEN);strcpy(GuiSendBuf, "receive message from GUI client\n");GuiSendBuf[strlen(GuiSendBuf)] = '\0';//iSendLen = write(GuiConnect_fd, GuiSendBuf, sizeof(GuiSendBuf));iSendLen = send(GuiConnect_fd, GuiSendBuf, strlen(GuiSendBuf), 0);printf("wrint Date Len to server (%d) : %s\n", iSendLen, GuiSendBuf);close(GuiConnect_fd);return 0;
}

服务端程序

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <netinet/in.h>
#include <unistd.h>//#define UNIX_DOMAIN "/tmp/UNIX.domain"
#define MAXClIENT 10
#define DATELEN 1024 //TDC 和 GUI 进程间通信数据长度int main(int argc, char *argv[])
{int iRet = -1;int iRecvLen = 0;int iCltAddrLen = 0;int TdcServer_fd = -1;int GuiClient_fd = -1;char TdcRecvBuf[DATELEN] = {0}; char TdcSendBuf[DATELEN] = {0}; //struct sockaddr_un CltAddr;//struct sockaddr_un SrvAddr;struct sockaddr_in CltAddr;struct sockaddr_in SrvAddr;//unlink(UNIX_DOMAIN); //保证没有已经存在的文件//creat server socket //TdcServer_fd = socket(PF_UNIX, SOCK_STREAM, 0);TdcServer_fd = socket(AF_INET, SOCK_STREAM, 0);printf(" === TdcServer_fd = %d\n", TdcServer_fd);if (TdcServer_fd < 0){perror("TDC cannot create communication socket");return 1;}  //set server addr_param//SrvAddr.sun_family = AF_UNIX;//IPV4//strncpy(SrvAddr.sun_path, UNIX_DOMAIN, sizeof(SrvAddr.sun_path) - 1);memset(&SrvAddr,0,sizeof(SrvAddr));SrvAddr.sin_family = AF_INET;SrvAddr.sin_port = htons(5050);  //这里输入服务器端口号SrvAddr.sin_addr.s_addr = htonl(INADDR_ANY); //INADDR_ANY表示本机IP//bind sockfd & addriRet = bind(TdcServer_fd, (struct sockaddr*)&SrvAddr, sizeof(SrvAddr));if (-1 == iRet){perror("cannot bind server socket");close(TdcServer_fd);// unlink(UNIX_DOMAIN);return 1;}//listen sockfd iRet = listen(TdcServer_fd, MAXClIENT);if (-1 == iRet){perror("cannot listen the client connect request");close(TdcServer_fd);// unlink(UNIX_DOMAIN);return 1;}//have connect request use acceptiCltAddrLen = sizeof(CltAddr);while(1){GuiClient_fd = accept(TdcServer_fd, (struct sockaddr*)&CltAddr, &iCltAddrLen);printf("============== GuiClient_fd = %d\n", GuiClient_fd);if(GuiClient_fd < 0){perror("cannot accept client connect request");close(TdcServer_fd);// unlink(UNIX_DOMAIN);return 1;}//read and printf sent client infomemset(TdcSendBuf, 0, DATELEN);strcpy(TdcSendBuf, "you have connected to TDC succeed, NOW Receive msg from server\n");//write(GuiClient_fd, TdcSendBuf, sizeof(TdcSendBuf));printf("== GuiClient_fd = %d\n", GuiClient_fd);send(GuiClient_fd, TdcSendBuf, strlen(TdcSendBuf), 0);memset(TdcRecvBuf, 0, DATELEN);//sleep(5);//iRecvLen = read(GuiClient_fd, TdcRecvBuf, sizeof(TdcRecvBuf));printf("receiveing .....\n");while (1){iRecvLen = recv(GuiClient_fd, TdcRecvBuf, DATELEN, 0);printf("Message from client (%d)) :%s/n", iRecvLen, TdcRecvBuf);}}close(GuiClient_fd);close(TdcServer_fd);//unlink(UNIX_DOMAIN);return 0;
}

第二种方法实现:使用unix域本地socket (个人简单理解为本地读写文件)

客户端程序

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <netinet/in.h>
#include <unistd.h>#define UNIX_DOMAIN "/tmp/UNIX.domain"
#define DATELEN 1024int main(int argc, char *argv[])
{int GuiConnect_fd = -1;int iRet = -1;int iRecvLen = 0;int iSendLen = 0;char GuiSendBuf[DATELEN] = {0};char GuiRecvBuf[DATELEN] = {0};static struct sockaddr_un ServAddr;//struct sockaddr_in ServAddr;//creat unix socketGuiConnect_fd = socket(PF_UNIX, SOCK_STREAM, 0);//GuiConnect_fd = socket(AF_INET, SOCK_STREAM, 0);printf("== GuiConnect_fd = %d\n", GuiConnect_fd);if (GuiConnect_fd < 0){perror("cannot create communication socket");return 1;}ServAddr.sun_family = AF_UNIX;strncpy(ServAddr.sun_path, UNIX_DOMAIN, sizeof(ServAddr.sun_path) - 1);//memset(&ServAddr, 0, sizeof(ServAddr));//ServAddr.sin_family = AF_INET;//ServAddr.sin_port = htons(5050);//ServAddr.sin_addr.s_addr = inet_addr("127.0.0.1");//connect serveriRet = connect(GuiConnect_fd, (struct sockaddr*)&ServAddr, sizeof(ServAddr));if(-1 == iRet){perror("cannot connect to the server");close(GuiConnect_fd);return 1;}//receive and send messagememset(GuiRecvBuf, 0, DATELEN);printf("GUI Receie Msg from TDC\n");//iRecvLen = read(GuiConnect_fd, GuiRecvBuf, sizeof(GuiRecvBuf));iRecvLen = recv(GuiConnect_fd, GuiRecvBuf, DATELEN, 0);printf("receive message from server (%d) :%s\n", iRecvLen, GuiRecvBuf);printf("GUI Send msg to TDC server:\n");memset(GuiSendBuf, 0, DATELEN);strcpy(GuiSendBuf, "receive message from GUI client\n");GuiSendBuf[strlen(GuiSendBuf)] = '\0';//iSendLen = write(GuiConnect_fd, GuiSendBuf, sizeof(GuiSendBuf));iSendLen = send(GuiConnect_fd, GuiSendBuf, strlen(GuiSendBuf), 0);printf("wrint Date Len to server (%d) : %s\n", iSendLen, GuiSendBuf);close(GuiConnect_fd);return 0;
}

服务端程序

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <netinet/in.h>
#include <unistd.h>#define UNIX_DOMAIN "/tmp/UNIX.domain"
#define MAXClIENT 10
#define DATELEN 1024 //TDC 和 GUI 进程间通信数据长度int main(int argc, char *argv[])
{int iRet = -1;int iRecvLen = 0;int iCltAddrLen = 0;int TdcServer_fd = -1;int GuiClient_fd = -1;char TdcRecvBuf[DATELEN] = {0}; char TdcSendBuf[DATELEN] = {0}; struct sockaddr_un CltAddr;struct sockaddr_un SrvAddr;//struct sockaddr_in CltAddr;//struct sockaddr_in SrvAddr;unlink(UNIX_DOMAIN); //保证没有已经存在的文件//creat server socket TdcServer_fd = socket(PF_UNIX, SOCK_STREAM, 0);//TdcServer_fd = socket(AF_INET, SOCK_STREAM, 0);printf(" === TdcServer_fd = %d\n", TdcServer_fd);if (TdcServer_fd < 0){perror("TDC cannot create communication socket");return 1;}  //set server addr_paramSrvAddr.sun_family = AF_UNIX;//IPV4strncpy(SrvAddr.sun_path, UNIX_DOMAIN, sizeof(SrvAddr.sun_path) - 1);//memset(&SrvAddr,0,sizeof(SrvAddr));//SrvAddr.sin_family = AF_INET;//SrvAddr.sin_port = htons(5050);  //这里输入服务器端口号//SrvAddr.sin_addr.s_addr = htonl(INADDR_ANY); //INADDR_ANY表示本机IP//bind sockfd & addriRet = bind(TdcServer_fd, (struct sockaddr*)&SrvAddr, sizeof(SrvAddr));if (-1 == iRet){perror("cannot bind server socket");close(TdcServer_fd);unlink(UNIX_DOMAIN);return 1;}//listen sockfd iRet = listen(TdcServer_fd, MAXClIENT);if (-1 == iRet){perror("cannot listen the client connect request");close(TdcServer_fd);unlink(UNIX_DOMAIN);return 1;}//have connect request use acceptiCltAddrLen = sizeof(CltAddr);while(1){GuiClient_fd = accept(TdcServer_fd, (struct sockaddr*)&CltAddr, &iCltAddrLen);printf("============== GuiClient_fd = %d\n", GuiClient_fd);if(GuiClient_fd < 0){perror("cannot accept client connect request");close(TdcServer_fd);unlink(UNIX_DOMAIN);return 1;}//read and printf sent client infomemset(TdcSendBuf, 0, DATELEN);strcpy(TdcSendBuf, "you have connected to TDC succeed, NOW Receive msg from server\n");//write(GuiClient_fd, TdcSendBuf, sizeof(TdcSendBuf));printf("== GuiClient_fd = %d\n", GuiClient_fd);send(GuiClient_fd, TdcSendBuf, strlen(TdcSendBuf), 0);memset(TdcRecvBuf, 0, DATELEN);//iRecvLen = read(GuiClient_fd, TdcRecvBuf, sizeof(TdcRecvBuf));printf("receiveing .....\n");//while (1){iRecvLen = recv(GuiClient_fd, TdcRecvBuf, DATELEN, 0);printf("Message from client (%d)) :%s/n", iRecvLen, TdcRecvBuf);}}close(GuiClient_fd);close(TdcServer_fd);unlink(UNIX_DOMAIN);return 0;
}

版权声明:本文为CSDN博主「三角函数sin」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sin0803/article/details/34875809

http://www.lbrq.cn/news/2674765.html

相关文章:

  • 房山网站建设服务南宁百度推广代理商
  • 做问卷调查的网站挣钱seo神器
  • 一级a做爰片i网站百度高级搜索引擎入口
  • 网站什么模板做的企业网络营销策划方案范文
  • 蓝奏云注册网站网络营销是做什么
  • 网络用语建设是什么意思北京网站seo费用
  • 服装网站建设网怎么推广自己的微信号
  • 如何网上快速接网站开发订单外贸公司一般怎么找客户
  • 域名跳转到其他网站seo教程技术整站优化
  • 网站制作需要多少钱客服百度移动端模拟点击排名
  • 网站中文通用网址域名亚马逊seo什么意思
  • 如何设计微商城网站建设seo独立站
  • 数码网站建设图片石家庄百度推广优化排名
  • 吉林省城市建设学校网站网络广告策划案例
  • 做交友信息网站可行么百度云网盘网页版登录
  • 国家城乡建设规划部网站seo网站培训优化怎么做
  • 衢州品牌网站设计员工培训
  • 国内做新闻比较好的网站sem代运营费用
  • 基于dw的动物网站设计论文网站运营课程
  • 在美国做网站搜索优化指的是什么
  • java做的新闻网站百度网站优化培训
  • 自媒体平台培训长沙seo研究中心
  • 如何找外贸公司seo软文推广
  • 网站备案信息真实性简单制作html静态网页
  • 建c2c网站费用百度seo排名优化公司哪家强
  • 潍坊网站建设费用如何自己开发一个平台
  • 网站建设绩效目标灰色关键词怎么做排名
  • 自建站公司什么是网络营销
  • 自媒体网站 程序广告联盟怎么加入
  • 如何建立自己的论坛seo排名培训学校
  • MATLAB实现遗传算法求解路网路由问题
  • 使用Windbg分析多线程死锁项目实战问题分享
  • macOS 搭建 Gitea 私有 Git 服务器教程
  • 嵌入式硬件中AI硬件设计方法与技巧
  • FFmpeg实现音视频转码
  • 安全生产基础知识(一)