TCP转发
-
在Linux C客户端服务器TCP转发中,我们如何准确地获取到真正的源IP地址?
在Linux C客户端服务器TCP转发中,要获取真实源IP,可以使用getsockname()函数。这个函数会返回当前套接字的本地地址,即客户端的真实源IP。示例代码如下:,,``c,#include,#include,#include,#include,#include,,int main() {, int sockfd = socket(AF_INET, SOCK_STREAM, 0);, struct sockaddr_in server_addr;, server_addr.sin_family = AF_INET;, server_addr.sin_port = htons(12345);, server_addr.sin_addr.s_addr = inet_addr("127.0.0.1");,, connect(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr));,, struct sockaddr_in client_addr;, socklen_t client_addr_len = sizeof(client_addr);, getsockname(sockfd, (struct sockaddr *)&client_addr, &client_addr_len);,, printf("真实源IP: %s,", inet_ntoa(client_addr.sin_addr));,, close(sockfd);, return 0;,},``,,这段代码会连接到本地的12345端口,然后使用getsockname()函数获取真实源IP,并输出到控制台。