socket实现进程间通信
来源:互联网 发布:淘宝销售冠军 编辑:程序博客网 时间:2024/05/21 12:47
进程间的通信方式有多种,今天来学一下socket实现进程间通信,听说这种通信方式现在用的最多,看代码吧。
[mapan@localhost TCP]$ lsclient.cpp makefile server.cpp[mapan@localhost TCP]$ cat server.cpp #include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#include <netdb.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <ctype.h>#include <errno.h>#include <malloc.h>#include <netinet/in.h>#include <arpa/inet.h>#include <sys/ioctl.h>#include <stdarg.h>#include <fcntl.h>#include <sys/types.h>#include <sys/wait.h>#include <netinet/in.h>#include <arpa/inet.h>#include <signal.h>#include <sys/un.h>#define MAXLINE 4096#define UNIXSTR_PATH "/tmp/unix.str"int main(){ int listenfd,connfd; socklen_t clilen; struct sockaddr_un cliaddr,servaddr; char recvbuf[20]={0}; listenfd=socket(AF_LOCAL,SOCK_STREAM,0); unlink(UNIXSTR_PATH); bzero(&servaddr,sizeof(servaddr)); servaddr.sun_family=AF_LOCAL; strcpy(servaddr.sun_path,UNIXSTR_PATH); bind(listenfd,(struct sockaddr *)&servaddr,sizeof(servaddr)); listen(listenfd,5); clilen=sizeof(cliaddr); connfd=accept(listenfd,(struct sockaddr *)&cliaddr,&clilen); printf("pid=%d\n",getpid()); read(connfd,recvbuf,sizeof(recvbuf)); printf("recvbuf=%s\n",recvbuf); getchar(); close(connfd); close(listenfd); return 0;}[mapan@localhost TCP]$ cat client.cpp #include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#include <netdb.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <ctype.h>#include <errno.h>#include <malloc.h>#include <netinet/in.h>#include <arpa/inet.h>#include <sys/ioctl.h>#include <stdarg.h>#include <fcntl.h>#include <sys/types.h>#include <sys/wait.h>#include <netinet/in.h>#include <arpa/inet.h>#include <signal.h>#include <sys/un.h>#define MAXLINE 4096#defineUNIXSTR_PATH"/tmp/unix.str"int main(){ int sockfd; struct sockaddr_un servaddr; char sendbuf[20]="1111111"; sockfd=socket(AF_LOCAL,SOCK_STREAM,0); bzero(&servaddr,sizeof(servaddr)); servaddr.sun_family=AF_LOCAL; strcpy(servaddr.sun_path,UNIXSTR_PATH); int ret=connect(sockfd,(struct sockaddr *)&servaddr,sizeof(servaddr)); write(sockfd,sendbuf,strlen(sendbuf)); getchar(); close(sockfd); return 0;}[mapan@localhost TCP]$ cat makefile all:server clientserver.o:server.cppg++ -c server.cppclient.o:client.cppg++ -c client.cppserver:server.og++ -o server server.oclient:client.og++ -o client client.oclean:rm -f server client *.o[mapan@localhost TCP]$
编译运行,运行服务端,打开另一个窗口运行客户端。
[mapan@localhost TCP]$ makeg++ -c server.cppg++ -o server server.og++ -c client.cppg++ -o client client.o[mapan@localhost TCP]$ ./server pid=22701recvbuf=1111111
通信成功,sockaddr_un本地通讯的套接字结构,它有2个参数:sun_family,sun_path。最重要的还是实践,其他零星知识点网上很多我就不赘述了。
参考资料:unix网络编程 卷一
阅读全文
0 0
- Socket 实现进程间通信
- socket实现进程间通信
- socket实现进程间通信
- socket实现进程间通信
- Socket实现进程间通信
- Socket实现进程间通信
- socket实现进程间通信
- Python socket 实现进程间通信
- 进程间通信-socket
- 进程间通信---------socket
- socket进程间通信
- socket进程间通信
- Socket进程间通信
- 进程间通信---Socket
- 利用socket实现vc++与.NET进程间的通信
- IPC之 - C#中用Socket 实现进程间通信
- 利用socket实现vc++与.NET进程间的通信
- 使用 异步多线程TCP Socket 实现进程间通信
- 【狼人杀】初阶教学——基本规则
- 愚人节的礼物
- Android 朋友圈之多图显示
- Codeforces From Y to Y
- 解决axios传递参数后台无法接收问题
- socket实现进程间通信
- 关于python下载安装,及其安装第三方库
- 关于java方法重载的理解
- 自定义控件Button基础篇和一行代码加载图片
- 鸡国福利
- Unity3D 关于各种坐标的注意事项
- java的this关键字
- nodejs Express入门教程实例
- DevOps详解(推荐)