FreeRTOS+Lwip寫的簡單區域網通訊log
阿新 • • 發佈:2019-02-13
下面的程式碼是有點小問題的,不過在這做個小的模版
#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);
}
}