进程学习笔记(二)进程间通信

server.c

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <time.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>

int main(int argc,char **argv){
    int z;
    char *srvr_addr="127.0.0.1";
    char *srvr_port="9099";
    struct sockaddr_in adr_srvr;
    struct sockaddr_in adr_clnt;
    int len_inet;
    int s;
    int c;
    int n;
    time_t td;
    char dtbuf[128];
    
    s = socket(PF_INET,SOCK_STREAM,0);
    memset(&adr_srvr,0,sizeof(adr_srvr));
    adr_srvr.sin_family = AF_INET;
    adr_srvr.sin_port = htons(atoi(srvr_port));
    adr_srvr.sin_addr.s_addr = inet_addr(srvr_addr);
    adr_srvr.sin_addr.s_addr = INADDR_ANY;
    len_inet = sizeof(adr_srvr);
    z = bind(s,(struct sockaddr *)&adr_srvr,len_inet);
    z = listen(s,10);
    while(1){
        len_inet = sizeof(adr_clnt);
        c = accept(s,(struct sockaddr *)&adr_clnt,&len_inet);
        
        time(&td);
        n = (int)strftime(dtbuf,sizeof(dtbuf),"time:%A %b %d %H:%M:%S %Y\n",localtime(&td));
        
        z = write(c,dtbuf,n);
        close(c);
    }
    return 0;
}

client.c

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>

int main(int argc,char **argv){
    int z;
    char *srvr_addr = "127.0.0.1";
    char *srvr_port = "9099";
    struct sockaddr_in adr_srvr;
    int len_inet;
    int s;
    char dtbuf[128];
    
    s = socket(PF_INET,SOCK_STREAM,0);
    memset(&adr_srvr,0,sizeof(adr_srvr));
    adr_srvr.sin_family = AF_INET;
    adr_srvr.sin_port = htons(atoi(srvr_port));
    adr_srvr.sin_addr.s_addr = inet_addr(srvr_addr);
    len_inet = sizeof(adr_srvr);
    z = connect(s,(void *)&adr_srvr,len_inet);
    
    z = read(s,&dtbuf,sizeof(dtbuf)-1);
    //dtbuf[z]=0;
    printf("Data & Time is: ---%s---\n",dtbuf);
    
    close(s);
    puts("");

    return 0;
}
原文地址:https://www.cnblogs.com/markliu/p/2833803.html