#ifndef __TCP__H__
#define __TCP__H__

/*
 * 跨平台 TCP 通信模块
 * - Windows: Winsock2
 * - Linux/其他: BSD socket
 * 提供 TCP 客户端：连接、发送、接收、断开
 */

#include <stddef.h>
#include "../../include/types.h"
#ifdef _WIN32
#include <winsock2.h>
#include <ws2tcpip.h>
#else
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <netdb.h>
typedef int SOCKET;
#define INVALID_SOCKET  (-1)
#define SOCKET_ERROR    (-1)
#endif

#define TCP_INVALID_SOCKET  (-1)
#define TCP_DEFAULT_BACKLOG  5

/* 初始化/清理网络库（Windows 下必须最先/最后调用） */
int Tcp_Init(void);
void Tcp_Cleanup(void);

/* TCP 客户端 */
int TcpClient_Connect(const char *ip, uint16_t port);
int TcpClient_Send(int sock, const void *buf, size_t len);
int TcpClient_Recv(int sock, void *buf, size_t len);
void TcpClient_Close(int sock);

/* TCP 服务器 */
int TcpServer_Listen(uint16_t port);
int TcpServer_Accept(int server_sock);
void TcpServer_Close(int server_sock);

#endif /* PC_HMI_TCP_H */
