#include <rtthread.h>
#include <sys/socket.h>
#include <netdb.h>
#include <sys/select.h>
#include <string.h>
#include <finsh.h>
#define BUFSZ 1024
static const char send_data[] = "This is TCP Client from RT-Thread.";
void tcpclient_select(int argc, char **argv)
{
int ret;
char *recv_data;
int sock, bytes_received;
const char *url;
int port;
int i, maxfdp1;
if (argc < 3)
{
rt_kprintf(
"Like: tcpclient_select 192.168.12.44 5000\n");
return ;
}
url = argv[1];
port = strtoul(argv[2], 0, 10);
{
return;
}
if ((sock =
socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
return;
}
{
return;
}
maxfdp1 = sock + 1;
while (1)
{
FD_ZERO(&readset);
FD_SET(sock, &readset);
i =
select(maxfdp1, &readset, 0, 0, 0);
if (i == 0) continue;
if (FD_ISSET(sock, &readset))
{
bytes_received =
recv(sock, recv_data, BUFSZ - 1, 0);
if (bytes_received < 0)
{
rt_kprintf(
"\nreceived error,close the socket.\r\n");
break;
}
else if (bytes_received == 0)
{
rt_kprintf(
"\nreceived error,close the socket.\r\n");
break;
}
recv_data[bytes_received] = '\0';
if (strncmp(recv_data, "q", 1) == 0 || strncmp(recv_data, "Q", 1) == 0)
{
rt_kprintf(
"\n got a 'q' or 'Q',close the socket.\r\n");
break;
}
else
{
}
ret =
send(sock, send_data, strlen(send_data), 0);
if (ret < 0)
{
break;
}
else if (ret == 0)
{
rt_kprintf(
"\n Send warning,send function return 0.\r\n");
}
}
}
return;
}