转:WinCE中socket与Win32中socket的区别

来源:互联网 发布:iphone7plusqq在线软件 编辑:程序博客网 时间:2024/06/02 13:56
1.  唯一例外的操作是必须解决Windows CE2 . 0内U D P数据报套接字中的错误:即每次调用s e n d或s e n d t o,都会导致内核内存泄漏。这个错误在Windows CE 2.1中已得到修复,但由于内核分散在R O M中,因此,目前还没有更新的软件可以修复Windows CE 2.0中的这一错误。唯一的解决办法是不要在Windows CE 2.0中使用数据报。所以要确定用的Windows CE 版本

2.  千万要记住,如果你把一个U n i c o d e字串造型成c h a r *,那么准备发送多少字节的长度参数就应该做出相应的调节!在Windows CE中,如果你打算把收到或发出的数据显示出来,必须考虑到它是不是U n i c o d e,这样才能将它显示出来。因为其他的Wi n 3 2函数的确要求U n i c o d e字串。总而言之,对执行一个简单的Wi n s o c k应用而言,Windows CE要复杂得多。
必须牢牢记住这一点:所有关系到收发数据的缓冲都属于简单的c h a r类型。也就是说,这些函数没有“U n i c o d e”版本。这一点对Windows CE来说尤为重要,因为Windows CE默认使用U n i c o d e。使用U n i c o d e时有一种选择,即把字符串当作c h a r *或把它造型
为c h a r *发送。需要注意的是,在利用字符串长度函数告诉Winsock API函数收发的数据有多少字符时,必须将这个值乘以2,因为每个字符占用字串组的两个字节。另一种选择是在将字串数据投给Wi n s o c k A P I函数之前,用Wi d e C h a r To M u l t i B y t e把U N I C O D E转换成A S C I I码。

3. 如果想在Windows CE上运行这些示例,只需要稍微修订Wi n s o c k代码即可。首先,头文
件必须是Wi n s o c k . h,而不是Winsock 2.h 。W S A S t a r t u p应该加载1 . 1版,因为它是适用于Windows CE的最新Wi n s o c k版。另外,Windows CE不支持控制台协议;因而必须用WinMain来代替main。注意,这并不意味着需要你把一个窗口合并到你的应用中;只意味着不能用printf这一类的控制台文本I / O函数。