From: k <yan...@gm...> - 2008-03-29 03:15:03
|
i use the swig packed the udt c++ library to pyd, i can use the function in udt.pyd , but i found a question, in a function recvmsg(),i can not receive the data send by the network, in the c++,the function's prototype is "int recvmsg(int a;char* OUTPUT,int len); when i send the string a="hello \0 world" by the network, the recvmsg() can only receive the "hello ",and can not receive the "world", i found ,the python str object use the '\0' to end the string ,so the message lost. is there some way to solve the problem? thank you! |
From: Haoyu B. <div...@gm...> - 2008-03-29 04:13:32
|
k wrote: > i use the swig packed the udt c++ library to pyd, i can use the function in udt.pyd , > but i found a question, in a function recvmsg(),i can not receive the data send by the network, in the c++,the function's prototype is "int recvmsg(int a;char* OUTPUT,int len); > when i send the string a="hello \0 world" by the network, > the recvmsg() can only receive the "hello ",and can not receive the "world", > i found ,the python str object use the '\0' to end the string ,so the message lost. Python not use '\0' as string terminate, you can try it out: In [3]: a="hello \0 world" In [4]: a Out[4]: 'hello \x00 world' I guess the problem is SWIG's typemaps use strlen to get length of the output string. So you should rewrite a typemap? Best regards, Haoyu Bai 3/29/2008 |