最終問了曾經遇到過這個問題的同事後,發現只是在創建 socket的地方綁定一個網卡就可以了,需要使用 SO_BINDTODEVICE來綁定網卡,需要的參數是網卡名稱。
代碼:
struct ifreq Ifreq;
strcpy(Ifreq.ifr_name, "eth0"); //這裏指定使用那塊網卡拉流 參數爲網卡名稱
if(setsockopt(SocketFd, SOL_SOCKET, SO_BINDTODEVICE, (char *)&Ifreq, sizeof(Ifreq)) < 0)
{
perror("setsockopt():SO_BINDTODEVICE");
return -1;
}