파이썬에서 raw 소켓 프로그램을 구현하고 있는데, 내 소켓을 인터페이스에 바인딩 할 수있는 곳이 bind()
입니다. 이 함수의 첫 번째 필드는 바인딩하려는 인터페이스입니다. 두 번째 필드 란 무엇입니까? Ethertype입니까 (예 : IP4)? 파이썬 참조 문서에있는 raw socket example의 코드는 다음과 같습니다파이썬에서 raw 소켓을위한 bind() 함수의 두 번째 필드
# create a raw socket and bind it to the public interface
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP)
s.bind((HOST, 0))
왜 두 번째 필드 제로? 다른 examples에서는 이것이 자주 0x0800 (또는 10 진수 2048)로 설정되어이 소켓이 IP4 프로토콜로 소켓을 설정하고 있다고 생각합니다. 나는 또한 이것을 9999로 설정 한 것을 보았습니다. 아마 나는 여기에서 뭔가를 놓치거나 오해하고 있습니다.
+1. 이것이 raw 소켓과 아무 관련이 없다는 것을 언급 할 필요가 있습니다. 스트림이나 데이터 그램 (TCP 또는 UDP, INET 제품군의 경우)과 똑같은 것이 사실입니다. – abarnert
+1 이것은 나를 위해 물건을 지 웁니다. 감사! – chembrad
@chembrad 기꺼이 도와 드리겠습니다. –