/* * rpc_transport.h * 定义RPC传输层的接口,负责处理网络通信 */ #ifndef RPC_TRANSPORT_H #define RPC_TRANSPORT_H #include "rpc_common.h" /* 根据不同平台包含不同的头文件 */ #ifdef _WIN32 #include #include #pragma comment(lib, "ws2_32.lib") /* Windows平台的类型定义 */ typedef SOCKET socket_t; #define INVALID_SOCKET_VALUE INVALID_SOCKET #define CLOSE_SOCKET(s) closesocket(s) /* Windows平台初始化和清理函数 */ int rpc_winsock_init(); void rpc_winsock_cleanup(); #else /* Linux/Unix平台的头文件 */ #include #include #include #include /* Linux/Unix平台的类型定义 */ typedef int socket_t; #define INVALID_SOCKET_VALUE (-1) #define CLOSE_SOCKET(s) close(s) /* Linux/Unix平台不需要特殊的初始化和清理 */ #define rpc_winsock_init() 0 #define rpc_winsock_cleanup() #endif /* 传输上下文 */ typedef struct { socket_t socket_fd; // 套接字文件描述符 struct sockaddr_in address; // 地址信息 } rpc_transport_t; /* 服务器上下文 */ typedef struct { socket_t server_fd; // 服务器套接字文件描述符 struct sockaddr_in address; // 服务器地址信息 } rpc_server_t; /* 传输层函数声明 */ // 初始化服务器 int rpc_server_init(rpc_server_t* server, const char* host, uint16_t port, int backlog); // 服务器等待连接 int rpc_server_accept(rpc_server_t* server, rpc_transport_t* transport); // 关闭服务器 void rpc_server_close(rpc_server_t* server); // 初始化客户端传输 int rpc_client_init(rpc_transport_t* transport, const char* server_host, uint16_t server_port); // 发送数据 int rpc_transport_send(rpc_transport_t* transport, const void* data, size_t data_size); // 接收数据 int rpc_transport_recv(rpc_transport_t* transport, void* buffer, size_t buffer_size); // 关闭传输连接 void rpc_transport_close(rpc_transport_t* transport); #endif /* RPC_TRANSPORT_H */