UDP 소켓을 통해 데이터를 전송할 수없는 이유는 무엇입니까? 127.0.0.1 대신 127.0.0.2? 수신이 내 수신이127.0.0.1 루프백 주소 이외의 바인딩
>>> import socket
>>> sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
>>> sock.bind(("127.0.0.1", 6666))
>>> sock.recvfrom(1024)
('01', ('127.0.0.1', 7777))
을 종료한다
작동하는 것 같다 그리고 이것은 내가 데이터를 전송하는 방법입니다
이제 보내는 내가>>> sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
>>> sock.bind(('127.0.0.2', 7777))
>>> sock.sendto(b'01',('127.0.0.1',6666))
2
아무것도처럼 말한다면
>>> sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
>>> sock.bind(('127.0.0.1', 7777))
>>> sock.sendto(b'01',('127.0.0.1',6666))
2
수신 끝에서 발생합니다. sendto는 .1 주소와 마찬가지로 2를 반환하지만, 수신 끝으로 도착하는 것은 아무것도 없습니다. 좀 더 이상하게하려면 127.0.0.2/6666을 바인드/수신하면 데이터를 제대로 수신 할 수 있습니다. 하지만 다시, 내가 127.0.0.2에서 데이터를 보내면 안돼
이것은 파이썬 2.7.5이고 나는 윈도우 7에서 그것을 실행한다. 나는 여러 IP 주소에 연결을 시뮬레이션 할 수있는 MT 환경을 만들려고 노력하고있다. 같은 컴퓨터. 나는 이것이 파이썬 기능 또는 윈도우 또는 사용자 에러 일지 모르겠다. ...
예, 물론 그랬습니다. 루프백 IF를 분명히 감지하는 rawcap.exe 프로그램도 있습니다. .1 주소에서 보낸 도구 바이트는 볼 수 있지만 .2 주소는 아닙니다. 그래서 누군가가 작동하지 않는 송신 측이라는 결론을 내릴 수 있습니다. – fastfox
@fastfox 수신 측에서 메시지를 보지 못했다는 뜻입니까? 하지만 그것은 내 편에서 일합니다. 소켓 바인딩 (127.0.0.1, 7777)을 먼저 닫은 다음 다른 터미널을 열고 (127.0.0.2, 7777)에 새로운 소켓 바인딩을 만든 다음 다시 시도해야합니다. –
예, 발신자가 127.0.0.1 이외의 다른 사람인 경우 수신 측에서 아무 것도 볼 수 없음을 의미합니다. 그것은 실제로 당신을 위해 작동한다면 그것은 매우 이상합니다. 나는 통역사를 다시 열려고 노력했고 몇 번 재부팅하기까지했다. 나는 리눅스 머신에서 같은 라인을 시도해 보았다. – fastfox