STM32F407+CUBEMX+FreeRTOS+lwIP之TCP记录
注意
如果连接失败,建议关一下代理软件。
配置方面可以参考一下上一篇UDP的文章
STM32F407+CUBEMX+FreeRTOS+lwIP之UDP记录
TCP client(socket)
#define LWIP_DEMO_PORT 8081
#define LWIP_DEMO_RX_BUFSIZE 200 /* 最大接收数据长度 */
#define IP_ADDR "192.168.123.92"/*client 服务端ip*/
osThreadId_t socket_tcp_TaskHandle;
const osThreadAttr_t socket_tcp_Task_attributes = {
.name = "socket_tcp_Task",
.stack_size = 128 * 8,
.priority = (osPriority_t) (osPriorityNormal-9),
};
void Start_socket_tcp_Task(void *argument);
/* 数据发送标志位 */
uint8_t g_lwip_send_flag;
int g_lwip_sock = -1;
int g_lwip_connect_state = 0;
socket_tcp_TaskHandle = osThreadNew(Start_socket_tcp_Task, NULL, &socket_tcp_Task_attributes);
lwip初始化后加点延时再连接
void Start_socket_tcp_Task(void *argument){
vTaskDelay(1000);
vTaskDelay(1000);
vTaskDelay(1000);
struct sockaddr_in atk_client_addr;
err_t err;
char g_lwip_demo_sendbuf[] = "ALIENTEK DATA \r\n";
g_lwip_connect_state = 0;
/*tcp client*/
atk_client_addr.sin_family = AF_INET; /* 表示IPv4网络协议 */
atk_client_addr.sin_port = htons(LWIP_DEMO_PORT); /* 端口号 */
atk_client_addr.sin_addr.s_addr = inet_addr(IP_ADDR); /* 远程IP地址 */
/**/
g_lwip_sock = socket(AF_INET, SOCK_STREAM, 0); /* 可靠数据流交付服务既是TCP协议 */