📄 child.c
字号:
#include <stdio.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#define CHILDPORT 1234#define PARENTPORT 2234#define MAXSOCKFD 10struct msg{ int processid; char strmsg[100];};int main(void){ struct msg childmsg; int childid; //create socket int sockfd; struct sockaddr_in addr; struct sockaddr_in remote_addr; struct sockaddr_in parent_addr; int parent_len=sizeof(struct sockaddr_in); int addr_len=sizeof(struct sockaddr_in); int remote_len=sizeof(struct sockaddr_in); //local char buffer[256]; if((sockfd=socket(AF_INET,SOCK_DGRAM,0))<0) { perror("socket"); exit(1); } bzero(&addr,sizeof(addr)); addr.sin_family=AF_INET; addr.sin_port=htons(CHILDPORT); addr.sin_addr.s_addr=htonl(INADDR_ANY); if(bind(sockfd,&addr,sizeof(addr))<0) { perror("connect"); exit(1); } //parent bzero(&parent_addr,sizeof(parent_addr)); parent_addr.sin_family=AF_INET; parent_addr.sin_port=htons(PARENTPORT); parent_addr.sin_addr.s_addr=htonl(INADDR_ANY); childid = getpid(); while(1) { //recv msg from parent recvfrom(sockfd,buffer,sizeof(buffer),0,&remote_addr,&remote_len); memset(&childmsg,0,sizeof(struct msg)); memcpy(&childmsg,buffer,sizeof(struct msg)); printf("The parent processid is %d,and the content is %s\n",childmsg.processid,childmsg.strmsg); sleep(1); //send msg to parent childmsg.processid=childid; strcpy(childmsg.strmsg,"hello parent i am your childe"); memcpy(buffer,&childmsg,sizeof(struct msg)); sendto(sockfd,buffer,256,0,&parent_addr,parent_len); sleep(1); } sleep(5); printf("process [%d]:child terminating...\n",getpid());}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -