boost.python 1

      最近在研究boost.python,因为想用C++做网络底层,然后用Python做逻辑层开发,以期待获得开发效率跟程序执行效率的平衡点,更重要的是,对于游戏服务端来说,稳定性绝对是最重要的,在硬件相当强悍和廉价的情况下,稳定性更加是一个游戏服务端设计者应该首要考虑的问题,毋庸置疑,python的容错性比C++要高很多。
  闲话少说,言归正传。在包装C++的代码中,我做了不少小实验。因为为了快速开发,我想用python本身提供的socket API,这样就遇到了一个问题,如何把C++代码序列化出来的二进制流传给Python?比较容易想到的,就是直接返回一个char *指针,指向这段缓冲区的首地址。实验中,遇到如下几个问题:
  1.返回类型必须是const char*,不可以是char*。
  2.如果返回const char*,则在python里调用len计算这串字符串的时候,跟传统的C字符串一样,遇到零就认为是结束了。
  3.如果返回的是string,则不存在第二个问题,但是,由于我们原来的消息类序列化出来的是一个char数组,所以,为了返回string,我不得不构造一个string对象,这造成了内存的二次拷贝。

  小结:目前只能用返回string的方式来实现,如果确实需要满足自己的特殊需求,可能需要花时间去研究boost的源码了,另外一种解决方式就是,直接使用c++ socket api,把收发消息的细节完全隐藏在C++模块里。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值