我正在尝试按如下方式设置 UDP 客户端:
1.创建 UDP 套接字
2.将其连接到服务器地址
3.绑定到本地端口。
sl_Bind ()调用失败、使用 sl_error_bsd_EINVAL 代码。
当我省略步骤2 sl_Bind ()时成功。
当我切换步骤2和3时,即在连接之前执行绑定,sl_Bind ()成功。
CC3120配置为 STA 并连接到 AP、服务包 sp_3.3.0.0_2.0.0.0_2.2.0.4。
代码如下:
int foo()
{
int32_t sock;
int32_t status;
SlSockAddr_t *sa;
SlSockAddrIn_t sAddr;
int32_t addrSize;
uint16 myPortNumber;
uint32 myIpAddress;
uint16 serverPortNumber;
uint32 IpserverAddress;
Sa =(SlSockAddr_t*) sAddr;
addrSize = sizeof (SlSockAddrIn_t);
sAddr.sin 系列= sl_AF_iNet;
sock = sl_Socket (sa->sa_family、sl_sock_DGRAM、0);
如果(sock < 0)
{
printf ("sl_Socket Failed:%d\r\n"、sock);
返回0;
}
myPortNumber = 1414;
myIpAddress = SL_INADDR_ANY;//SL_IPV4_VAL (192、168、103、140);
serverPortNumber = 1515;
serverIpAddress = sl_IPv4_VAL (192、168、103、39);
sAddr.sin 端口= sl_Htons (serverPortNumber);
sAddr.Sin_addr.s_addr = sl_Htonl (serverIpAddress);
status = sl_Connect (sock、sa、addrSize);
如果(状态< 0)
{
printf ("sl_Connect 失败:%d\r\n"、状态);
返回0;
}
sAddr.sin 端口= sl_Htons ((uint16_t) myPortNumber);
sAddr.Sin_addr.s_addr = sl_Htonl (myIpAddress);
status = sl_Bind( sock、sa、addrSize);
如果(状态< 0)
{
printf ("sl_Bind 失败:%d\r\n"、状态);
返回0;
}
状态= sl_close (sock);
如果(状态< 0)
{
printf ("sl_close 失败:%d\r\n"、状态);
返回0;
}
返回0;
}