/*接收消息--单项的接收消息*/

原创 2007年10月10日 21:15:00


              /*接收消息--单项的接收消息*/

#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/ipc.h>
#include<sys/msg.h>           //头文件信息
                              // 系统定义的BUFSIZ的值为8192     

struct my_msg_st               //定义一个结构体名为my_msg_st  
{
    int my_msg_type;           //结构体成员,定义一个名为my_msg_type为整型数据
    char msg_text[BUFSIZ];     //结构本成员,定义一个字符数组类型my_text[512]
};

int main(int argc, char *argv[])   //主函数,包含两个参数
{
    int running=1;                 //定义running为整型数据,给running赋初值为1
    int msgid;                     //定义msgid为整型数据
    struct my_msg_st some_data;    //定义了一个结构体变量名为some_data
    int msg_to_receive=0;          //整型msg_to_reseive赋初值为0

     /*下面:如果可要创建一个Key值为12345,且户权限为0666的消息队列,如果创建失败为-1,则执行下面*/
    if((msgid=msgget((key_t)12345,0666|IPC_CREAT))==-1)
    {
 perror("msgget");                   //当msgid等于-1时则打印错误的信息
 exit(EXIT_FAILURE);                 //异常退出
    }

    while(running)                   //当running的值为"真"时
    {
        /*下面:(msg_to_receive优先权)接收最大为BUFSIZ大的结构体变量some_data的消息队列msgid*/
 if(msgrcv(msgid,(void *)&some_data,BUFSIZ,msg_to_receive,0)==-1)
 {
     perror("msgrcv");                           //打印错误的信息
     exit(EXIT_FAILURE);                         //异常退出
 }
 printf("receiver mssage:%s",some_data.msg_text); //打印接受到的字符串
 if(strncmp(some_data.msg_text,"end",3)==0)     //当end这3个字符复制到buffer中时,执行下面
     running=0;                                //把零赋给running.
    }

    if(msgctl(msgid,IPC_RMID,0)==-1)    //从系统中删除msgid这个消息队列,
    {
 fprintf(stderr,"msgctl(IPC_RMID)failed/n"); //打印错误的信息
 exit(EXIT_FAILURE);             //异常退出
    }
    return 0;          //返回零  
}
 

消息队列 (msgrcv, msgsnd)

#include #include #include int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); ss...
  • aixiaoxiaoyu
  • aixiaoxiaoyu
  • 2016-07-05 19:44:21
  • 313

微信公众平台开发配置接口

  • 2016年01月15日 16:52
  • 13KB
  • 下载

微信公众平台开发【接收消息】接收普通消息

当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML数据包到开发者填写的URL上。服务器在解析此数据包,获取相关参数的值从而做出回复。接收普通消息主要包括:文本消息、图片消息、语音消息、...
  • oldinaction
  • oldinaction
  • 2015-08-26 13:06:22
  • 4279

微信企业号接收消息(使用SpringMVC)

微信企业号接收消息(使用SpringMVC) 将应用设置在回调模式时,企业可以通过回调URL接收员工回复的消息,以及员工关注、点击菜单、上报地理位置等事件。 在接收到事件后,企业可以发送被动响应消息...
  • rzg813
  • rzg813
  • 2014-09-22 19:27:43
  • 21300

ActiveMQ 消息接收方式

第二部分: ActiveMQ 消费者接收消息两种方式消息生产者public class JMSProducer {private static final Logger log=LoggerFacto...
  • zyp_yun
  • zyp_yun
  • 2017-01-12 14:31:12
  • 2581

关于dll中接收消息的问题

  关于dll中接收消息的问题 由于接收消息必须要有hwnd,也就是需要有个窗口对应才能接收消息,但在Dll中不需要这个窗口,却又想要能够接收消息。这样的话,就可以在Dll中创建一个“消息窗口(Mes...
  • mjh1021
  • mjh1021
  • 2009-11-12 15:46:00
  • 3224

微信公众平台开发获取接收消息

定义消息类型处理函数 在接收到的消息中根据消息类型,定义不同的消息处理函数, public function responseMsg() { $postStr = $GLOBALS[&...
  • abcde158308
  • abcde158308
  • 2016-12-27 17:25:36
  • 693

Kafka接收消息(Consumer)

package org.util; import java.text.SimpleDateFormat; import java.util.ArrayList; import java....
  • u013244038
  • u013244038
  • 2017-03-05 14:03:43
  • 1513

记一次socket 接收消息产生的bug

今天项目产生了bug,解决后发现了bug产生的原因: 由于客户端会进行socket消息的处理,服务端负责消息的发送。所以如果客户端处理消息“慢”,或者服务端发送消息“快”,则会导致客户端接收消息的时候...
  • u011467458
  • u011467458
  • 2017-03-30 14:30:43
  • 331

c# 中如何定义和接收消息

在C#中目前我还没有找到发送消息的类成员函数,所以只能采用通过调用WIN 32 API 的 SendMessage() 函数实现。由于 SendMessage的参数中需要得到窗体的句柄(handler...
  • 21aspnet
  • 21aspnet
  • 2007-03-24 13:56:00
  • 2101
收藏助手
不良信息举报
您举报文章: /*接收消息--单项的接收消息*/
举报原因:
原因补充:

(最多只允许输入30个字)