有没有办法在 C 程序中实现下一个功能:需要通过指定的网络接口建立传出的 TCP 连接?例如:
eth0-172.16.0.1 eth1-192.168.1.1
在某些情况下,我需要从源地址 172.16.0.1 建立传出连接,在某些其他情况下,则需要从 192.168.1.1 建立传出连接。
这可能吗?这可以通过 bind() 例程实现吗?
短暂性脑缺血。
答案1
使用命令行参数按以下方式分配本地地址
结构sockaddr_in本地地址;
本地地址.sin_family = AF_INET;
localaddr.sin_addr.s_addr = inet_addr("172.16.0.1");
localaddr.sin_port = 0; // 任何本地端口都可以
绑定(sockfd,(struct sockaddr *)&localaddr,sizeof(localaddr));
当你想使用其他 IP 时,请使用它代替 172.16.0.1