TCP Client优化
#include "socket_tcp_server.h"
#include "socket_tcp_client.h"
#include "socket_wrap.h"
#include "ctype.h"
#include "FreeRTOS.h"
#include "task.h"
static char ReadBuff[BUFF_SIZE];
void vTcpClientTask(void)
{
int cfd, n, i, ret;
struct sockaddr_in server_addr;
again:
//创建socket
cfd = Socket(AF_INET, SOCK_STREAM, 0);
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(SERVER_PORT);
server_addr.sin_addr.s_addr = inet_addr(SERVER_IP);
//连接到服务器
//connect 其实是一个阻塞接口,内部要完成TCP的三次握手,当然有超时机制,所以我们需要等一段时间,才能重新连接到服务器
ret = Connect(cfd, (struct sockaddr*)&server_addr, sizeof(server_addr));
if(ret < 0){
//100ms去连接一次服务器
vTaskDelay(100);
goto again;
}
printf("server is connect ok\r\n");
while(1){
//等待服务器发送数据
n = Read(cfd, ReadBuff, BUFF_SIZE);
if(n <= 0){
goto again;
}
//进行大小写转换
for(i = 0; i < n; i++){
ReadBuff[i] = toupper(ReadBuff[i]);
}
//写回服务器
n = Write(cfd, ReadBuff, n);
if(n <= 0){
goto again;
}
}
}
测试