您好,TI工程师
我在CC3200 example code: getting_started_with_wlan_station
中有添加如下function 去sniffer IP layer的 RAW Pakcet, 但始终返回错误信息:[(PNum=×) recievedBytes= -11] :
查看-11 表示 try again , 可以麻烦看下是哪里的不对吗?
我添加的function 是按照TI wiki 中描述里进行的
http://processors.wiki.ti.com/index.php/CC31xx_%26_CC32xx_Advanced_Networking
int RawSocketRx(int iNumberOfPackets)
{
SlSockAddrIn_t Addr;
unsigned char *pbuf = NULL;
int recievedBytes = 0;
int AddrSize = 0;
int lRetVal = -1;
int iSoc = -1;
const int flag = 1;
struct SlTimeval_t timeval;
timeval.tv_sec = 0; // Seconds
timeval.tv_usec = 20000; // Microseconds. 10000 microseconds resoultion
pbuf = (unsigned char*)malloc(BUFFER_SIZE);
/* create a raw-socket following the instructions given above*/
iSoc = sl_Socket(SL_AF_INET, SL_SOCK_RAW, SL_IPPROTO_RAW);
lRetVal = sl_SetSockOpt(iSoc,SL_IPPROTO_IP,SL_IP_HDRINCL, &flag, sizeof(flag));
ASSERT_ON_ERROR(__LINE__, lRetVal);
lRetVal = sl_SetSockOpt(iSoc,SL_SOL_SOCKET,SL_SO_RCVTIMEO, &timeval, sizeof(timeval));
ASSERT_ON_ERROR(__LINE__, lRetVal);
Addr.sin_family = SL_AF_INET;
Addr.sin_port = sl_Htons((unsigned short)0);
Addr.sin_addr.s_addr = sl_Htonl(INADDR_ANY);
AddrSize = sizeof(SlSockAddrIn_t);
sl_Connect(iSoc, ( SlSockAddr_t *)&Addr, AddrSize);
while(iNumberOfPackets--)
{
memset(pbuf, 0, BUFFER_SIZE);
recievedBytes = sl_Recv (iSoc, pbuf, BUFFER_SIZE, 0);
UART_PRINT("[(PNum=%d) recievedBytes= %d] : \n\r", iNumberOfPackets,recievedBytes);
DUMP(pbuf,recievedBytes);
}
sl_Close(iSoc);
free(pbuf);
return SUCCESS;
}