请教一个关于glib中hash table的问题

跌落的阳光碎片 发布于 2017/03/08 07:31
阅读 86
收藏 0

 

请问glib的hash table能不能用自定义的结构体做key?
我现在有一个需求,要用到hash.
我想把tcp udp中的源ip,目的ip,源端口号,目的端口号这四元组做为一个结构体.用来做key,然后value是其它的一些数据.也是设计一个结构体.
现在key和value结构体是这样的:

C/C++ code?

1

2

3

4

5

6

7

8

9

10

11

12

13

typedef struct _key

{       

    unsigned short port_src;/* source port */

    unsigned short port_dst;/* dest port */

    unsigned int ip_src;    /* source IP */

    unsigned int ip_dst;    /* dest IP */

} key;

     

typedef struct _value

{   

    struct  timeval arrived_time;

} value;

         



请问一下能不能实现呢?


现在我的做法是用glib里面的指针类型去做这件事.但好像不可以:

C/C++ code?

1

g_hash_UDP = g_hash_table_new_full(g_direct_hash,IPEqualFunc,free_key,free_value);



现在每次insert相同的key(相同的已经填充好数据的四元组结构体)都会形成一个新的key:value,并不会像官方文档介绍的那样新的value会覆盖掉原来的value.

是不是我的理解有偏差呢?希望有熟悉glib的高手可以解答.谢谢

更多0

加载中
返回顶部
顶部