如何通过指定的网络接口建立传出 TCP 连接?

如何通过指定的网络接口建立传出 TCP 连接?

有没有办法在 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

相关内容