SWRU368C May 2018 – January 2021 CC3100 , CC3100MOD , CC3200 , CC3200MOD
Unlike a TCP client, a TCP server must establish several things before communication can occur.
SockID = sl_Socket(SL_AF_INET,SL_SOCK_STREAM, 0);
#define PORT_NUM 5001
SlSockAddrIn_t LocalAddr;
LocalAddr.sin_family = SL_AF_INET;
LocalAddr.sin_port = sl_Htons(PORT_NUM);
LocalAddr.sin_addr.s_addr = 0;
Status = sl_Bind(SockID, (SLSockAdd_t *) &LocalAddr, sizeof(SlSockAddrIn_t));
Status = sl_Listen(SockID, 0);
Upon a successful connection, a new socket handler newSockID returns, which is then used for future communication.
long nonBlocking = 1;
int newSockID;
Status = sl_SetSockOpt (SockID, SL_SOL_SOCKET, SL_SO_NONBLOCKING, &nonBlocking, sizeof(nonBlocking));
while( newSockID < 0 )
{
newSockID = sl_Accept(SockID, ( struct SlSockAddr_t
*) &Addr, (SlSocklen_t*) &AddrSize) ;
if( newSockID == SL_EAGAIN )
{
/* Wait for 1 ms */
Delay(1);
}
else if( newSockID < 0 )
{
return -1;
}
}
#define BUF_SIZE 1400
char SendBuf[BUF_SIZE];
/* Write data to your buffer*/
<write buffer action>
Status = sl_Send(newSockID, SendBuf, BUF_SIZE, 0 );
char RecvBuf[BUF_SIZE];
Status = sl_Recv(newSockID, RecvBuf, BUF_SIZE, 0);
sl_Close(newSockID);
sl_Close(SockID);