新闻  |   论坛  |   博客  |   在线研讨会
Socket send and recv
电子禅石 | 2019-06-01 18:19:41    阅读:8571   发布文章

char message[]= "hello rt-thread server!";
#define BUFSZ  1024
void tcpclient(void)
{
    int ret;
    char *recv_data;
    struct hostent *host;
    int sock,bytes_recived;
    struct sockaddr_in server_addr;
    char url[] = "192.168.1.45";
    int port = 5000;
    host = gethostbyname(url);
    recv_data = rt_malloc(BUFSZ);
    sock = socket(AF_INET, SOCK_STREAM, 0);
    if(sock < 0)
    {
        rt_kprintf("sock create failed");
    }
    server_addr.sin_family = AF_INET;
    server_addr.sin_port = htons(port);
    server_addr.sin_addr = *((struct in_addr *)host->h_addr);
    if(connect(sock,(struct sockaddr *)&server_addr,sizeof(struct sockaddr)) == -1)
    {
        rt_kprintf("connect fail !\n");
        closesocket(sock);
        return;
    }
    else
    {
        rt_kprintf("connect successful\n");
        send(sock,message,sizeof(message),0);
    }
    
    while(1)
    {
     bytes_recived = recv(sock,recv_data,BUFSZ -1,0);
     if(bytes_recived < 0)
     {
        closesocket(sock);
        rt_kprintf("\nreceived error,close the socket.\r\n");
        rt_free(recv_data);
        break;
     }
     else if(bytes_recived == 0)
     {
        closesocket(sock);
        rt_kprintf("\n received error,close the socket .\r\n");
        rt_free(recv_data);
        break;
     }
     recv_data[bytes_received] = '\0';
     if(strncmp(recv_data,"q",1) == 0 || strncmp(recv_data,"Q",1))
     {
        closesocket(sock);
        rt_kprintf("\n got a 'q' or 'Q',close the socket.\r\n“);
        rt_free(recv_data);
        break;
     }
     else
     {
        rt_kprintf("\n Received data = %s ",recv_data);
     }
     ret =send(sock, send_data, strlen(send_data), 0);
     if(ret < 0)
     {
        closesocket(sock);
        rt_kprintf("\n send error,close the socket.\r\n");
        rt_free(recv_data);
        break;
     }
     else if (ret == 0)
     {
        rt_kprintf("send warning ,send function return \r\n");
     }
    }
    
    
}


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
属于自己的技术积累分享,成为嵌入式系统研发高手。
推荐文章
最近访客