저는 macOS와 gnu netcat을 사용하고 있습니다. netcat을 사용하여 메시지를 브로드캐스트하는 방법을 알고 싶습니다.
netcat
4555로 듣고 있어요
netcat -l -p 4555 192.168.0.101
그런데 방송 메시지를 보내려고 하면
netcat 192.168.0.255 4555
그런데 계속 실수를 하네
Error: Couldn't create connection (err=-5): Permission denied
다음 오류가 발생합니다.
Error: Couldn't create connection (err=-5): Permission denied
이것다음 게시물작동한다고 말하지만 netcat-traditional
저는 이 작업을 수행하기 위해 GNU netcat을 실행하고 있습니다. 여기서는 이것이 중요합니다.
답변1
요점을 얻으려고 노력 중입니다.
TCP는 브로드캐스트에 적합하지 않습니다.
TCP를 사용하여 브로드캐스트 IP 주소에 연결할 수는 없습니다.인터넷 고양이UDP를 사용하라는 지시가 없는 한 기본적으로 TCP가 사용되며 이러한 시도는 오류가 발생하기 쉽습니다.
UDP 브로드캐스트에는 플래그 설정이 필요하지만 GNU netcat은 이를 처리하지 않습니다.
이는 BSD 소켓 API와 그 확장이 통과하는 것입니다
setsockopt(2)
.SO_BROADCAST
(브로드캐스트를 지원하는 프로토콜의 경우) 브로드캐스트 IPv4 주소로 패킷을 보낼 수 있어야 합니다. 그렇지 않으면 오류가 발생합니다. 이것GNU netcat 소스 코드어디에도 문자열을 포함하지 마십시오SO_BROADCAST
.
따라서 GNU netcat에서는 브로드캐스트를 보내는 것이 불가능합니다. 다른 도구로 전환해야 합니다. 또는 다른 변형인터넷 고양이(주위에 여러 개가 있습니다) 또는 사용socat
더 많은 기능이 있습니다. 이것은 대략socat
(멀티캐스트 및) 브로드캐스트와 함께 사용됨. (분명히) GNU netcat의 터널 모드처럼 양쪽에 소켓이 있는 경우를 처리합니다.