1. 程式人生 > >FreeRTOS+Lwip寫的簡單區域網通訊log

FreeRTOS+Lwip寫的簡單區域網通訊log

下面的程式碼是有點小問題的,不過在這做個小的模版

#include <stdlib.h>
#include "FreeRTOS.h"
#include "task.h"
#include "queue.h"

#include "lwip/debug.h"
#include "lwip/stats.h"
#include "lwip/tcp.h"
#include <string.h>
#include <stdio.h>

char g_netLog[64] = "baiyu";

#define     MAX_NAME_SIZE       32

const
char server_ip_str[]="192.168.0.102"; const unsigned short server_port=8888; u8 TCP_Client_RecvBuf[256]; u8 TCP_Client_SendBuf[256]; static int TCP_Client_Thread() { int ret; struct sockaddr_in local_addr; int socket_fd; int rc; local_addr.sin_addr.s_addr = inet_addr(server_ip_str); local_addr.sin_family = AF_INET; local_addr.sin_port = htons(server_port); socket_fd=socket(AF_INET,SOCK_STREAM,0
); if(socket_fd== -1) { return -1; } ret=connect(socket_fd,(struct sockaddr*)&local_addr,sizeof(local_addr)); if(ret==-1) { close(socket_fd); return -2; } for(;;) { /* if(send(s, TCP_Client_SendBuf,256,0)<0){ printf("[TCP_Client_Thread]:send server failure....\r\n"); } */
ret=recv(socket_fd,TCP_Client_RecvBuf,256,0); if(ret==-1){ printf("[TCP_Client_Thread]:socket read ....\r\n"); close(socket_fd); break; } else if(ret == 0){ printf("[TCP_Client_Thread]:socket connect server failure....\r\n"); close(socket_fd); break; } else{ printf("%s\n",TCP_Client_RecvBuf); memcpy(TCP_Client_SendBuf,TCP_Client_RecvBuf, 256); rc = send(socket_fd, TCP_Client_SendBuf,256,0); } #ifdef NET_LOG if(mqtt_reconnect_flag){ mqtt_reconnect_flag = 0; return -3; } sys_msleep(1000); #endif } return 0; } void net_log_hy(void *arg) { int ret = 0; for(;;){ ret = TCP_Client_Thread(); if(ret == -3){ printf("[net_log_hy]:net reconnet\n"); } else if(ret == -1){ printf("[net_log_hy]:socket Create a failure!\r\n"); }else if(ret == -2){ printf("[net_log_hy]:connect server failure....\r\n"); } else{ printf("[net_log_hy]:noting\n"); } sys_msleep(1000); } }