client.c

#include <sys/socket.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <sys/stat.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <time.h>
#define maxn 101
/**
消息队列发送信息全过程有:
1>定义消息结构
2>打开/创建消息队列
3>组装信息
4>发送信息
5>发送判断
消息队列接收信息全过程:
1>定义消息结构
2>打开/创建消息队列
3>准备接收消息缓冲区
4>接收消息
5>接收判断

**/
struct mymsgbuf
{
        long mtype;
        char  ctext[100];
};
void _encode(char e_message[],char d_message[])
{
        long i ;
        sscanf(d_message,"%s",e_message);
        memset(d_message,0,sizeof(d_message));
        for(i = 0;i < strlen(e_message);i++)
        {
                sprintf(d_message,"%s%03d",d_message,e_message[i]+588);
        }
}
int  main()
{
    /**发送信息例子**/
        struct  mymsgbuf buf;
        int msgid;
        char d_message[maxn];
        char e_message[maxn];
        printf("输入要发送的消息:");
        if((msgid = msgget(0x1234,0666|IPC_CREAT)) <0)
        {
                fprintf(stderr, "open msg %X failed.\n",0x1234 );
                return ;
        }
        while(strncmp(d_message,"exit",4))
        {
                memset(&buf,0,sizeof(buf));
                memset(d_message,'\0',sizeof(d_message));
                memset(e_message,'\0',sizeof(e_message));

                /**从键盘输入消息结构数据内容**/
                fgets(d_message,sizeof(d_message),stdin);
                /**加密信息**/
                printf("加密前的信息是: %s\n",d_message);
                _encode(d_message,e_message);
                printf("加密后的信息是: %s\n",e_message);
                /**设置消息类型为进程ID**/
                strcpy(buf.ctext,e_message);
                buf.mtype = getpid();
                /**发送信息**/
                while((msgsnd(msgid,&buf,strlen(buf.ctext),0)) < 0)
                {
                        if(errno == EINTR) continue;
                        return;
                }
                printf("输入要发送的消息:");
        }
        return 0;
}
View Code

相关文章:

  • 2021-05-02
  • 2021-12-20
  • 2021-08-14
  • 2022-12-23
  • 2021-12-03
  • 2021-07-28
猜你喜欢
  • 2022-12-23
  • 2021-12-03
  • 2021-11-13
  • 2021-12-26
  • 2021-11-04
  • 2021-06-09
  • 2021-11-15
相关资源
相似解决方案