大虾门请教一下:
    我用的UDP收包,想把收到的信息用消息队列存储,
消息队列创建用函数时key_t ftok( char * fname, int id )
fname的取值为什么
id的值可以随意取吗?

解决方案 »

  1.   

    例如:UDP 接收数据,recvform后,放在消息队列,在进行对数据和命令的解析.
    消息队列改如何创建?
      

  2.   

    你不是有数据的buf么,另外还有一个标识这个数据的ID,那么你需要保证每个buf的ID是唯一的,这样你就可以将每笔数据存入一个这样的map中:map<int, char*> mymap;
    应该是这样的一些语句:key_t ftok( char * fname, int id, int nfnamelen )
    {
        char *pBuf = new char [nfnamelen+1]; // nfnamelen这个长度你可以通过再加一个参数传递
         mymap[id] = pBuf;
    }// 你需要在程序退出的时候释放你动态分配的内存,而这些个内存的指针在map中保存,故你需要遍历map并释放之
    MapClear()
    {
        map<int,char*>::iterator it = mymap.begin();
        while(it != mymap.end())
        {
            delete it->second;
            it->second = NULL;        mymap.erase(it++);
        }
    }