oSIP 协议栈作为GNU维护的SIP 开发库,结构简单,小巧,可移植性好,可以应用于支持POSIX 的任何系统当中,已经被成功地移植到Solaris,HP unix,RT OS VxWorks,Windows 和GNU/Linux系统中并且获得了广泛的应用。这里是将OSIP协议移植到WinCE下,我的工作主要在EVC上进行的,使用的libosip2.0.9+eXosip0.7.6,目前在Pocket PC 2003上面程序已经通过初步测试,能够使用来进行INVITE、RING、ACKNOWLEDGE和DECLINE操作等等。可以依据需要使用这个库来开发其他的SIP应用程序。附件是整个工程的代码,其中EXOSIP为EXOSIP库,LIBOSIP为LIBOSIP库。每个文件夹PLATFORM下为工程文件夹,VSNET文件夹中的工程可以在VS2003下面编译出PC版,WINCE文件夹中的工程可以编译出WINCE/PPC版。在EXOSIP\PLATFORM里面,TestOsipEx_PC为PC上的测试程序,可以在VS2003下编译运行;TestOsipEx为EVC下的测试程序,可以在EVC4下编译运行。 特别说明: 本程序的修改主要是针对WINCE增加了一些条件编译选项,snprintf定义为_snprintf,benginthreadex_为CreateThread,_endthreadex为ExitThread,针对WINCE API下面对time函数的实现不太好,我用了GetSystemTime加上后面一些计算来计算的时间,和标准time返回有偏差的,需要精确时间值的需要再进一步修改一下。另外是在jpipe.c中,WINCE下setsockopt无正常返回,这里我在WINCE中将其省略,需要设置这里接收超时的可以再修改一下。 本来应该写一个文档上来,可惜时间仓促,就先写这些了,大家可以通过在源程序里面搜索_WIN32_WCE可以找到相关的修改部分,总共不超过100处。 致谢:其中的测试程序参考的“一个基于exosip的软电话例子” http://www.52blog.net/user1/51004/archives/2005/357082.shtml http://blog.csdn.net/wffy