硬汉嵌入式论坛

 找回密码
 立即注册
查看: 358|回复: 1
收起左侧

[以太网] lwip socket客户端,链接疑问

[复制链接]

23

主题

72

回帖

141

积分

初级会员

积分
141
发表于 2024-11-26 21:58:14 | 显示全部楼层 |阅读模式
本帖最后由 zbq 于 2024-11-26 22:01 编辑



#include "lwip/sys.h"
#include "lwip/api.h"
#include <lwip/sockets.h>
#define PORT              5001
#define IP_ADDR        "192.168.0.181"
static void client(void *thread_param) {   
  int sock = -1;     
  struct sockaddr_in client_addr;   
  uint8_t send_buf[]= "This is a TCP Client test...\n";  
   while (1)     {      
       sock = socket(AF_INET, SOCK_STREAM, 0);      
       if (sock < 0)         {         
         printf("Socket error\n");      
        vTaskDelay(10);           
        continue;         
      }      
      client_addr.sin_family = AF_INET;   
     client_addr.sin_port = htons(PORT);      
     client_addr.sin_addr.s_addr = inet_addr(IP_ADDR);      
     memset(&(client_addr.sin_zero), 0, sizeof(client_addr.sin_zero));      
     if (connect(sock,  (struct sockaddr *)&client_addr,   sizeof(struct sockaddr)) == -1)         {   
          printf("Connect failed!\n");            
         closesocket(sock);            
         vTaskDelay(10);            
         continue;      
    }      
  printf("Connect to iperf server successful!\n");         
while (1)         {        
    if (write(sock,send_buf,sizeof(send_buf)) < 0)        
         break;           
  vTaskDelay(1000);   
     }         
closesocket(sock);     
}
}


void client_init(void) {  
   sys_thread_new("client", client, NULL, 512, 4);
}

上面的代码,如果服务端关机,这时候客户端频繁的connect 失败,close socket 再创建,这样会不会导致内存频繁申请释放,有么有正好的方法呢?

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115490
QQ
发表于 2024-11-27 08:26:59 | 显示全部楼层
失败了,重新连接就行了。如果lwip有个abort api更好,可以abort后重新连接。

使用RL-TCPnet V7.X的函数netTCP_Connect反复重连服务器端,可以在前面调用下netTCP_Abort,保证每次都可以正常重连
https://www.armbbs.cn/forum.php? ... 0435&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-4-28 19:29 , Processed in 0.241771 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表