에 소켓 SO_BINDTODEVICE를 설정할 수 없습니다 (우분투 16.04) 소켓에 결합 SO_BINDTODEVICE을 설정하는 것이,내가 리눅스에 출마 오래된 코드가 enp4s0
setsockopt(sout, SOL_SOCKET, SO_BINDTODEVICE,"enp4s0", 4);
나는 새로운 우분투로 대상을 변경해야 17.10이고 오류로 인해 실패합니다. "No such device", 루프백 'lo'인터페이스를 사용하여이 대상에서 테스트했으며 작동합니다.
인터페이스
는 멀티 캐스트 플래그가1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 00:0a:cd:21:ac:2a brd ff:ff:ff:ff:ff:ff
3: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 30:9c:23:1c:b9:08 brd ff:ff:ff:ff:ff:ff
4: enp0s31f6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 30:9c:23:1c:b9:09 brd ff:ff:ff:ff:ff:ff
22: [email protected]: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 500
link/ether 52:54:00:e4:5a:f8 brd ff:ff:ff:ff:ff:ff
23: [email protected]: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 500
link/ether 52:54:00:a0:93:d0 brd ff:ff:ff:ff:ff:ff
그것은 모든 인터페이스 그러나 보라 실패를 사용할 수 있습니다.
나는 장치 이름의 길이를 의심하기 때문에 17.04에서 테스트했으며 이름은 "eno0"이지만 wlp5s0 (wifi)는 작동하지 않습니다.
나는 어떻게 해결 해야할지 모르겠다. 너? 길이에 제한이 있습니까?
바보 나 :
은 문자열의 길이로 마지막 인자를 변경! 감사합니다 – Mquinteiro
@Mquinteiro 기꺼이 도와 드릴 수 있습니다. 유용하다고 생각되면 [이 대답 수락] (https://stackoverflow.com/help/accepted-answer)을 자유롭게 할 수 있습니다. – dbush