bind-source-addr是一个Socket选项,它被用来控制数据包的源IP地址。在Linux操作系统上,可以使用setsockopt函数来设置bind-source-addr选项。
代码示例:
#include
#include
#include
int sockfd = socket(AF_INET, SOCK_DGRAM, 0);
struct sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = htons(1234);
addr.sin_addr.s_addr = inet_addr("192.168.1.100");
int option_value = 1;
int ret = setsockopt(sockfd, SOL_IP, IP_BIND_SOURCEADDR, &option_value, sizeof(option_value));
if(ret == -1) {
perror("setsockopt");
exit(EXIT_FAILURE);
}
bind(sockfd, (struct sockaddr*)&addr, sizeof(addr));
在上面的代码中,IP_BIND_SOURCEADDR参数被设置为1,表示启用此选项。当输入源地址时,此源地址将与出站分组绑定。这在多线程或多进程网络编程中非常有用,因为您可以让每个线程或进程使用不同的源地址。