ZHCU938C May 2018 – January 2021 CC3100 , CC3100MOD , CC3200 , CC3200MOD
第一步是创建套接字。返回的套接字处理程序是应用中最重要的元素。如果没有返回的套接字处理程序,网络将无法正常工作。
int SockID;
SockID = sl_Socket(SL_AF_INET, SL_SOCK_STREAM, 0);
SL_AF_INET 表示使用 IPv4,SL_SOCK_STREAM 表示使用 TCP。socket.h 头文件中对这两个值进行了定义。该示例在第三个参数中设置 0,以便从所选域和类型中选择默认协议。在线文档中提供了更多详细信息。有些结构和常数的定义位于 SDK 内的 socket.h 头文件中。
作为 TCP 客户端,应用会执行 sl_Connect() 以连接至服务器。服务器实现方案可以在下面找到。
/* IP addressed of server side socket.Should be in long format,
* E.g: 0xc0a8010a == 192.168.1.10 */
#define IP_ADDR 0xc0a80168
int Status;
int Port = 5001;
SlSockAddrIn_t Addr;
Addr.sin_family = SL_AF_INET;
Addr.sin_port = sl_Htons((UINT16)Port);
Addr.sin_addr.s_addr = sl_Htonl((UINT32)IP_ADDR);
Status = sl_Connect(SockID, ( SlSockAddr_t *) &Addr, sizeof(SlSockAddrIn_t));
Addr 指定目标地址和相关信息。因为结构类型 SlSockAddr 是通用类型,请使用 SlSockAddrIn_t 填充细节并将其转换为 SlSockAddr。成功连接之后,SockID 套接字处理程序已准备好执行数据交换。
sl_Send() 和 sl_Recv() 函数可用于数据交换。定义缓冲区大小。
#define BUF_SIZE 1400
char SendBuf[BUF_SIZE];
/* Write data to your buffer*/
<write buffer action>
Status = sl_Send(SockID, SendBuf, BUF_SIZE, 0 );
char RecvBuf[BUF_SIZE];
Status = sl_Recv(SockID, RecvBuf, BUF_SIZE, 0);
完成后,使用 sl_Close() 关闭套接字,以便其他应用能够重复使用资源。
sl_Close(SockID);