none
怎样通过WiFi发送UDP数据? RRS feed

  • 问题

  •     各位朋友,谢谢您的浏览。

        我正陷入一场苦恼之中。我书写了一段程序,用来和服务器通信,使用socket进行TCP和UDP通信,连接用的WiFi,使用计算机到计算机的连接。这段程序运行在一台wince embedded 6.0的PPC上。当我使用笔记本或者台式机(都是windows xp平台)时,UDP通信非常的好。可是当我在一台windows mobile 6.1的smart phone上运行同样的程序时,UDP却不能通信成功。

       为此,我做了大致如下的测试:PPC上的程序是一个UDP服务器:

       服务器流程:socket(), bind(), recvfrom(), sendto()

       客户端运行在Smart phone上:

       流程: socket(), sendto(), recvfrom()

       这个程序时仿照Steven Richard在Apue中的例子书写的。

       实际执行的时候,服务器和客户端都阻塞在recvfrom()上。

       如果更换试验平台,它们通信非常的好。

       SDK: smart phone 用的windows mobile 6.0 .prf

                  PPC用的自己定制的sdk

      使用的开发平台: visual studio 2005

    不知道有谁可以帮小弟一把。

    2010年10月28日 4:51

答案

  • 谢谢您的帮助。我已经解决问题了。解决过程:

     

     @1. 把数据拆成小包:在PPC上发送长度为32的字符串

     @2. 在Smart phone上收取,成功!

    ---猜想可能是接收缓冲的问题

     @3.查阅MSDN上的socket帮助,使用setsockopt()设置SOL_RCVBUF的值

     @4.问题解决。

     

    我在Xp的机器上做实验,用SOL_RCVBUF取回来的长度为8192,在smart phone上是32768。我感到疑惑。在PC上不需要设置RCVBUF就可以成功,而在smart phone上就必须这样做。

       决定看看Richard的<<tcp/ip详解>>增加一点知识。

    2010年10月29日 5:09

全部回复

  • 是不是网络不太稳定。
    Please remember to mark the replies as answers if they help and unmark them if they provide no help
    2010年10月28日 9:45
    版主
  • 谢谢您的帮助。我已经解决问题了。解决过程:

     

     @1. 把数据拆成小包:在PPC上发送长度为32的字符串

     @2. 在Smart phone上收取,成功!

    ---猜想可能是接收缓冲的问题

     @3.查阅MSDN上的socket帮助,使用setsockopt()设置SOL_RCVBUF的值

     @4.问题解决。

     

    我在Xp的机器上做实验,用SOL_RCVBUF取回来的长度为8192,在smart phone上是32768。我感到疑惑。在PC上不需要设置RCVBUF就可以成功,而在smart phone上就必须这样做。

       决定看看Richard的<<tcp/ip详解>>增加一点知识。

    2010年10月29日 5:09
  • 你好,

    也可以参考《EVC高级编程及其应用开发》第9章和第11章的内容,里面写的比较详细。源代码可以在http://www.waterpub.com.cn/上下载。


    施炯
    2010年11月1日 8:29
    版主