用cc3200,参考的例程是2.16 tcp_socket,手机AP用iperf,手机端怎么才能接受经过3200发送的数据信息
用cc3200,参考的例程是2.16 tcp_socket,手机AP用iperf,手机端怎么才能接受经过3200发送的数据信息,望大神指教。
http://processors.wiki.ti.com/index.php/CC32xx_TCP_Socket_Application
这里面有个说明
手机端的的安卓平台下的tcp、 udp的网络助手,一般的做法都是打开,增加连接,输入IP地址+端口号,等待或者向目的CC3200的建立的IP地址和端口号进行收发数据。
用的就是这个例子,但是手机端只是现实接受完成,发送完成,不显示接收的数据内容,怎样才能在手机上显示发送的数据内容,万分感谢
手机端只是显示接收数据完成,发送数据完成,但是具体接收的数据是啥不能在手机上显示。我做的是想把数据信息在手机上显示出来。万分感谢
我用过有人的网络手机(安卓)网络助手《有人网络助手》,如我之前说所的打开软件,增加连接,输入IP地址+端口号,等待或者向目的CC3200的建立的IP地址和端口号进行收发数据。数据也会显示在手机的助手中,其他的手机软件没有测试过。
我试了试,手机下载了有人网络助手,但是连接不上,您当时用的时候咋连接的?麻烦您了
我当时是测试example/{hib}实验建立的UDP的连接,简单写一下当时的测试记录吧
CC3200-STA采用DHCP方式 获取AP分配给自己的IP地址。注意创建UDP-Socket仅用到iSocketDesc = sl_Socket(AF_INET, SOCK_DGRAM, 0);
唯一返回的是UDP Socket的ID号,利用该ID号,向固定的端口广播UDP数据:
sBroadcastAddr.sin_family = AF_INET; IPv4 socket (UDP, TCP, etc)
sBroadcastAddr.sin_addr.s_addr= sl_Htonl(0xFFFFFFFF); 255.255.255.255
sBroadcastAddr.sin_port= sl_Htons(APP_UDP_PORT); 目的UDP的端口号5001
Broadcast message
lRetVal = sendto(iSocketDesc, (char *)&pcBroadcastMessage[0],sizeof(pcBroadcastMessage), 0,(struct sockaddr *)&sBroadcastAddr,sizeof(sBroadcastAddr));
<1>注意CC3200在创建UDP-Client时,并没有指定自己的UDP端口号,仅仅是获得了socket的ID号,在UDP发送数据时①获取socket的ID号②指定目的IP地址或者采用广播IP地址255.255.255.255③指定目的IP的端口号
<2>注意在创建完UDP-socket时仅仅建立了一个UDP-Client并没有进行sl_Bind即没有建立UDP-Server建立服务器,建立Server时具体操作如下:
sAddr.sin_family = SL_AF_INET;
sAddr.sin_port = sl_Htons((unsigned short)usPort); CC3200 UDP本地Server端口号
sAddr.sin_addr.s_addr = sl_Htonl((unsigned int)0xc0a80169); CC3200静态IP 192,168,1,105
是不是不用指定本地IP地址?还是静态IP需要指定,DHCP方式?--Test
iAddrSize = sizeof(SlSockAddrIn_t);
binding the UDP socket to the UDP server address
iStatus = sl_Bind(iSockID, (SlSockAddr_t *)&sAddr, iAddrSize); 绑定完成开启Server模式
Test测试结果如下:
在sl_Socket()后面增加如下Bind信息
----------------------------------------------------增加----------------------------------------------------
unsigned long ulIP = 0;
unsigned long ulSubMask = 0;
unsigned long ulDefGateway = 0;
unsigned long ulDns = 0;
SlSockAddrIn_t sAddr;
int iAddrSize;
int iStatus;
Get IP address 当开启DHCP可以通过下面函数获取自己IP等网络信息
lRetVal = Network_IF_IpConfigGet(&ulIP,&ulSubMask,&ulDefGateway,&ulDns); 获取IP地址
sAddr.sin_family = SL_AF_INET;
sAddr.sin_port = sl_Htons((unsigned short)6001); 指定自己的UDP端口号 Test OK 可以指定UDP的端口号
sAddr.sin_addr.s_addr = sl_Htonl((unsigned int)ulIP); 数据格式ulIP=0xc0a80108 获取自 己的IP地址192,168,1,8
sAddr.sin_addr.s_addr = sl_Htonl((unsigned int)0); Test IP adr=0 OK 没有影响,难道这个参数没有影响?---没有影响!看其他历程中直接将本地地址为0
iAddrSize = sizeof(SlSockAddrIn_t);
binding the UDP socket to the UDP server address
iStatus = sl_Bind(iSocketDesc, (SlSockAddr_t *)&sAddr, iAddrSize);
if( iStatus < 0 )
{ error
sl_Close(iSocketDesc);
ASSERT_ON_ERROR(BIND_ERROR);
}
----------------------------------------------------------------------------------------------------------------------
注意到测试OK本地CC3200的IP地址可以设为0,貌似这个参数没什么影响,但是端口号,确实可以指定具体号码,从手机端测试就可以看出。注意PC端口的网络调试工具,数据延迟很严重,跟网络保护可能有关系
手机客户端创建UDP-Server接收CC3200发送过来数据