TCP Server端实现
C/S模型:
实例操作:通过PC端发送字符串给STM32,在让STM32把小写转换成大写,发回给PC端,由此实现PC端到STM32端的交互过程。
TCP Client实现
C/S模型:
操作实例:
通过PC端发送小写的字符串,再通过转换成大写字符串,由STM32发送给PC端。
在这里插入代码片
#include "socket_tcp_server.h"
#include "socket_wrap.h"
#include "ctype.h"
char ReadBuff[BUFF_SIZE];
/**
* @brief TCP 服务器任务
* @param None
* @retval None
*/
void vTcpServerTask(void){
int sfd, cfd, n, i;
struct sockaddr_in server_addr, client_addr;
socklen_t client_addr_len;
//创建socket
sfd = 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 = htonl(INADDR_ANY);
//绑定socket
Bind(sfd, (struct sockaddr *)&server_addr, sizeof(server_addr));
//监听socket
Listen(sfd, 5);
//等待客户端连接
client_addr_len = sizeof(client_addr);
again:
cfd = Accept(sfd, (struct sockaddr *)&client_addr, &client_addr_len);
printf("client is connect cfd = %d\r\n",cfd);
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;
}
}
}
`