Linux多網卡拉同一組播導致數據異常

最近在做項目的時候遇到了這麼一個問題,就是在使用 多網卡的 Linux主機拉組播數據的時候,如果兩塊網卡在一個局域網中,並且拉同一個組播流,那麼就會出現問題,問題的現象是 每個網卡都可以收到組播流,但是收到的組播流數據是雙倍的。

最終問了曾經遇到過這個問題的同事後,發現只是在創建 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;
	}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章