#include <rtthread.h>
#include <sys/socket.h>
#include <netdb.h>
#include <string.h>
#include <finsh.h>
#define BUFSZ 1024
static const char send_data[] = "This is TCP Client from RT-Thread.";
void tcpclient(int argc, char **argv)
{
int ret;
char *recv_data;
int sock, bytes_received;
const char *url;
int port;
if (argc < 3)
{
rt_kprintf(
"Like: tcpclient 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;
}
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(port);
server_addr.sin_addr = *((
struct in_addr *)host->h_addr);
rt_memset(&(server_addr.sin_zero), 0,
sizeof(server_addr.sin_zero));
{
return;
}
while (1)
{
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;
}