专栏中心

EEPW首页 > 专栏 > Socket send and recv

Socket send and recv

发布人:电子禅石 时间:2019-06-01 来源:工程师 发布文章
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");
     }
    }
    
    
}


专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

电子束光刻机将用于芯片量产?

H桥电机驱动电路

CC430 概述

视频 2010-03-15

CC2520 社区视频

视频 2010-03-15

CC2431.CC2430及Zigbee应用的片上系统(SOC)解决方案

视频 2010-03-15

设计和开发实时系统

马斯克放话\"重返工作狂\"模式,特斯拉应声大涨近7%

蛇形机器人的研究与开发

印度造iPhone对美出口首超中国,但挑战才刚开始

CC2530 片上系统视频

视频 2010-03-15

CC2591 社区视频

视频 2010-03-15

卢伟谈小米自研玄戒:先从最难的旗舰芯片开始做 接下来攻克5G基带

\'机器学习元素周期表\' 或许能推动人工智能的发现

超越铜和光,一种新的互连技术瞄准下一代数据中心

深入了解内存

资源下载 2007-02-16

IBM、Deca 宣布联手,将在加拿大魁北克建设一条先进封装量产线

EDA/PCB 2025-05-28

电流回路是分析电路图的基础,看看这个电路你会更明白

ICDIA创芯展将于7月11-12日在苏州召开,近百家本土芯片企业展示新产品新技术新应用

2025-05-28

三星内存条

更多 培训课堂
更多 焦点
更多 视频

技术专区