나는 읽고 쓸 P
수 있지만 특정 포트에서 읽고 다른 포트로 출력할 수 있도록 다른 포트 에 연결하는 프로그램을 원합니다 .stdin
stdout
nc
# The reading is easy, here P reads from port 50505
nc -l 50505 | P
포트 60606에 다시 쓰려면 어떻게 해야 합니까?
답변1
내 말은 누군가가 당신의 컴퓨터에 2개의 TCP 연결(하나는 포트 50505, 다른 하나는 포트 60606)을 열고 첫 번째 연결에서 P에 공급할 데이터를 보내고 두 번째 연결에서 데이터를 기대할 수 있다는 것입니다. TCP 연결은 P의 출력을 읽습니다. 그러면 그것은:
< /dev/null nc -q -1 -l 50505 | P | nc -l 60606 > /dev/null
또는 다음을 사용하여 socat
:
socat -u tcp-listen:50505,reuseaddr - | P | socat -u - tcp-listen:60606,reuseaddr
P
출력을 동일한 연결로 다시 보냅니다 .
socat tcp-listen:50505,reuseaddr exec:P
답변2
nc
사용하기 위해 포트가 필요하지 않습니다 . bash
스스로 할 수 있습니다:
Bash는 다음 표에 설명된 대로 리디렉션에서 여러 파일 이름을 사용할 때 특별히 여러 파일 이름을 처리합니다.
/dev/fd/fd
If fd is a valid integer, file descriptor fd is duplicated.
/dev/stdin
File descriptor 0 is duplicated.
/dev/stdout
File descriptor 1 is duplicated.
/dev/stderr
File descriptor 2 is duplicated.
/dev/tcp/host/port
If host is a valid hostname or Internet address, and port is an integer
port number or service name, bash attempts to open a TCP connection to
the corresponding socket.
/dev/udp/host/port
If host is a valid hostname or Internet address, and port is an integer
port number or service name, bash attempts to open a UDP connection to
the corresponding socket.