2014-07-17 2 views
0

나는 예를 들어 그때 언젠가 후에 내가 좋아하는 것 www.google.com:80에 포트 9001에서 들어오는 연결을 전달하고 싶습니다 프로그래밍 다른 시스템에 로컬 시스템에 들어오는 TCP 연결을 리디렉션 및 조건부 다른 기계어떻게 프로그래밍 방식으로 파이썬에서 TCP 연결을 전달할 수 있습니까?

을로 변경하려면 로컬 컴퓨터에서 9001을 닫고 9400에서 www.yahoo.com:80으로 들어오는 연결을 전달하거나 동시에 두 개의 전달 규칙을 동시에 가질 수 있습니다.

처음에는 iptables로이 작업을 수행 할 수 있다고 생각했지만 확실하지 않습니다. 또한 TCP 소켓 프록시를 살펴 보았습니다.하지만 연결의 내용에 관심이 없기 때문에 프로그래밍 방식으로 리디렉션하고 닫을 수 있습니다.

+0

리눅스 머신을 사용하는 경우 cronjob과 iptables를 사용하여이를 수행 할 수 있습니다. – niculare

+0

나는 정기적으로 대신 조건 적으로 의미했다. 호스트 이름 만 IP를 허용하지 않으므로 iptables로 어떻게 할 수 있습니까? – nickponline

+0

주기적으로 사용하는 대신 조건 적으로 사용하려면 조건 변경을 청취하고 iptables를 업데이트하는 데몬을 만드십시오. IP 주소는 조건 변경시 iptables를 업데이트하기 전에 호스트 이름에서 확인됩니다. – niculare

답변

0

sockets 라이브러리를 사용하여 통신 할 TCP 포트에 대한 연결을 만들 수 있으며, 데이터가 많을 때까지 계속 읽을 수 있습니다. 원하는만큼 길게 읽을 수 있습니다.

그리고 주위에 조건부를 넣을 수 있습니다. 이게 도움이되는 것 같니?

+0

통신이 양방향 (전이중)이어야한다면 어떻게됩니까? –

+0

그래서 create_connection 초기화 프로그램에 의해 생성 된 연결은 양쪽 소켓 모두'send'와'recv'를 허용합니다. 그래서 당신은 단순히 자신의 버퍼로 읽고, 처리하고, 둘 중 하나/둘 모두로 되돌릴 수 있습니다. 양방향성이이 접근법에서 왜 문제가되는지 이해하는 데 어려움을 겪고 있습니다. –

+0

귀하의 코드가 한 방향만을 다루고 있음을 지적했습니다. –