msgrcv,msgsnd进程通信,消息的发送和接收

//进程通信,消息的发送和接收

//client.c



#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 <fcntl.h>



#define MSGKEY 75

struct msgform

{

    long mtype;

    char mtext[1000];

}msg;



int msgqid;

void client()

{

    int i;

    msgqid=msgget(MSGKEY,0777);

    for(i=10;i>=1;i--)

    {

        msg.mtype=i;

        printf("(client)sent\n");

        msgsnd(msgqid,&msg,1024,0);

    }

    exit(0);

}



main()

{

    client();

}















//进程通信,消息的发送和接收

//server.c



#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 <fcntl.h>

#include <sys/msg.h>

#include <sys/ipc.h>



#define MSGKEY 75

struct msgform

{

    long mtype;

    char mtext[1000];

}msg;



int msgqid;

void server()

{

    msgqid=msgget(MSGKEY,0777|IPC_CREAT);

    do

    {

        msgrcv(msgqid,&msg,1030,0,0);

        printf("(server)receive\n");

    }while(msg.mtype!=1);

    msgctl(msgqid,IPC_RMID,0);

    exit(0);

}



main()

{

    server();

}

 

你可能感兴趣的:(通信)