两台WINCE的网络通信

//自己现在手头正在调试两台WINCE6.0操作系统的机器,其中要用到其之间通过一根网线的链接来进行网络通信,目前还没有调通,但

//是下面是我同学博客里的文章,在这里转载一下,可以借鉴~~等调通之后,在系统的做个总结,来跟大家共享~~

 

 

=============================================================

标题:wince网络通讯的问题

摘要:

备注:Windows CE 5.0 + udp

日期:2010.5.25

姓名:朱铭雷

=============================================================

       两台wince设备进行基于udp协议的网络通讯,发现只能单向收发。A发B收可以的话,则A收B发就不通。试着将网线调了个头,就发现可能变为了B发A收可以,但是B收A发却不行。为此请教了一些人,在csdn上还开了一个帖子。最后确定是mac地址的问题。将其中一台wince设备与另一个ARM开发板进行通讯,发现收发都正常。后来用程序获取这几台设备的mac地址,发现正常通讯的两台设备,它们的mac地址是不相同的,而收发不正常的两台设备,他们的mac地址是相同的。比如,我先前不能够正常进行通讯的两台wince设备,他们的mac地址都为00:0A:EB:FD:7A:00。

       获取mac地址的程序如下,这个在MSDN里和网络上都可以找得到。

       HRESULT hr;  

    IPAddr  ipAddr;  

    ULONG   pulMac[2];  

    ULONG   ulLen;  

    ipAddr = inet_addr ("192.168.0.17"); 

    memset (pulMac, 0xff, sizeof (pulMac));  

    ulLen = 6;  

      

    hr = SendARP (ipAddr, 0, pulMac, &ulLen);  

    printf ("Return %08x, length %8d/n", hr, ulLen);  

      

    size_t i, j;  

    char * szMac = new char[ulLen*3];  

    PBYTE pbHexMac = (PBYTE) pulMac;  

    //  

    // Convert the binary MAC address into human-readable  

    //  

    for (i = 0, j = 0; i < ulLen - 1; ++i) {  

        j += sprintf (szMac + j, "%02X:", pbHexMac[i]);  

    }  

      

    sprintf (szMac + j, "%02X", pbHexMac[i]);  

    printf ("MAC address %s/n", szMac);  

delete [] szMac;  

然后试着修改mac地址,看了一下设备,目前这台设备在注册表中可以设置mac地址,猜测开机启动的时候,驱动应该会去读取注册表中的mac地址。将其中一台wince设备的mac地址修改为00:0A:EB:FD:7A:11。重新启动了系统,再次测试,先前udp通讯不正常的两台设备已经能够正常通讯了,收发都没有问题。

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/joyzml/archive/2010/05/25/5623414.aspx

阅读更多
个人分类: WINCE学习
想对作者说点什么? 我来说一句

WinCE网络操作程序代码

2012年08月21日 5.48MB 下载

wince 客户端网络通信源码

2010年06月24日 160KB 下载

基于WinCE的无线网络通信实验

2013年04月25日 1.04MB 下载

没有更多推荐了,返回首页

不良信息举报

两台WINCE的网络通信

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭