![socat/ncat을 통해 파일 내용을 소켓에 반복적으로 보내는 방법](https://linux55.com/image/6327/socat%2Fncat%EC%9D%84%20%ED%86%B5%ED%95%B4%20%ED%8C%8C%EC%9D%BC%20%EB%82%B4%EC%9A%A9%EC%9D%84%20%EC%86%8C%EC%BC%93%EC%97%90%20%EB%B0%98%EB%B3%B5%EC%A0%81%EC%9C%BC%EB%A1%9C%20%EB%B3%B4%EB%82%B4%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
몇 가지 성능 테스트를 실행 중이고 동일한 파일을 소켓에 반복적으로 보내려고 합니다.
내가 다음과 같은 일을 한다면:
$ socat -b1048576 -u OPEN:/dev/zero TCP4-LISTEN:9899,reuseaddr,fork
$ socat -b1048576 -u TCP:127.0.0.1:9899 OPEN:/dev/null
그런 다음 1MB 버퍼는 iftop
20Gbps를 추진하고 있음을 알려줍니다.
그러나 내가 정말로 하고 싶은 일은 다음과 같다.
$ socat -b1048576 -u OPEN:somefile.dat TCP4-LISTEN:9899,reuseaddr,fork
$ myprog TCP:127.0.0.1:9899 > /dev/null
그런데 한 번만 밀리고 정말 처음까지 밀고 다시 보내고 somefile.dat
싶어요 .rewind()
답변1
모든 새로운 연결에서 동일한 파일을 열고 전송한다고 가정하면 다음과 같이 -U
의 반대 방향 -u
과 반전된 주소를 사용할 수 있습니다.
socat -b1048576 -U TCP4-LISTEN:9899,reuseaddr,fork OPEN:somefile.dat
socat TCP:127.0.0.1:9899 - >/dev/null
파일을 복제하고 싶다면무기한, 다음과 같이 사용할 수 있습니다.
socat -b1048576 -U TCP4-LISTEN:9899,reuseaddr,fork SYSTEM:'while cat somefile.dat;do \: ;done'