2017-09-07 7 views
0

169.254.xx.xx에서 192.168.xx.xx까지 이더넷을 통해 UDP 패킷을 보내야합니다. 두 번째 주소는 FPGA의 주소이며 MAC 주소는 알려져 있습니다. 패킷을 모니터하기 위해 wireshark를 사용하고 있지만, 언 바운드 소켓이 있고 sock.sendto()이라고 부르면 WLAN을 통해 전송됩니다. 나는 WLAN 인터페이스 소켓을 바인딩 할 때, 전송,하지만 난 이더넷 인터페이스에 소켓을 바인딩 할 때 내가 보내려고 할 때,이 오류가 발생합니다 :알고있는 MAC 주소와 ipv4 주소를 사용하여 이더넷 어댑터에서 FPGA로 UDP 패킷을 보내야합니다.

OSError: [WinError 10051] A socket operation was attempted to an unreachable network 
이더넷 인터페이스에 바인딩

, 그리고 난 169.254.xx.xx 서브넷의 사용되지 않는 주소로 보내면 ARP를 전송하지만 대상이 192.168.xx.xx 서브넷에있을 때 아무 것도 전송되지 않습니다. 여기

코드입니다 : 192.168.xx.xx는 서로 다른 네트워크를 대표

import socket 
import time 

address = '192.168.1.239' 
port = 1235 
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
sock.bind(('169.254.190.73', 0)) 

sock.sendto('100'.encode('utf-8'), (bytes(address, 'UTF-8'), port)) 
time.sleep(0.005) 

sock.close() 
''' 
    ''' 
+0

''169.254.190.73 '! ='192.168.1.239'' 어댑터가'No active connection! '이라고 말합니다. – dsgdfg

+0

그리고'metrics'가 소켓 "0.0.0.0"'주소에 바인딩되어 있다고 생각하지 않는다면! – dsgdfg

+0

"0.0.0.0"에 대한 @dsgdfg 바인딩이 작동하지 않는 것 같습니다. – hsifeulbhsifder

답변

1

169.254.xx.xx 이후와, 요구 사이에서 트래픽을 라우팅합니다. 그러나 169.254.0.0/16 (autoconf)은 대개 라우팅되지 않습니다.

두 노드가 실제로 동일한 계층 2 세그먼트에있는 경우 autoconf 클라이언트의 IP 주소 만 변경하면됩니다.