나는 무엇을 할지를 알기 위해 소량의 데이터를 기다리는 포트를 수신하는 프로그램을 가지고 있습니다. 해당 프로그램의 인스턴스 5 개를 실행합니다 (각 포트에서 5000에서 5004까지 포함).소켓을 몇 번 열어 쓰고 닫으려고 할 때 연결이 거부되었습니다 (파이썬)
파이썬으로 작성된 두 번째 프로그램은 소켓 "s"를 만들고 포트 5000에 데이터를 쓰고 닫습니다. 그런 다음 포트 번호를 증가시키고 5001에 연결된 새 소켓을 만듭니다. 5004에 도달 할 때까지이 작업을 수행합니다.
첫 번째 소켓 연결은 정상적으로 작동합니다. 포트 5000에서 5002에있는 프로그램은 데이터를 정상적으로 수신합니다. 그러나 네 번째 소켓 연결 결과 "연결 거부 됨"오류 메시지가 나타납니다. 한편, 네 번째 청취 프로그램은 여전히 포트 5003에서 대기 중임을보고합니다. 텔넷을 사용하여 연결할 수 있으므로 제대로 듣고 있습니다.
포트 번호를 변경하려고 시도했지만 실패 할 때마다 네 번째 연결이 시도됩니다.
확인해야하는 시스템에 제한이 있습니까? 송신 측에서는 언제든지 하나의 소켓 만 열어 둘 수 있으며 실제로 5를 통해 3을 얻을 수 있다는 사실은 내가 생각할 수있는 많은 기본 문제 해결 단계를 제거합니다.
의견이 있으십니까? 감사!
--- 편집 ---
내가 파이썬 버전 2.6에 CentOS 리눅스입니다. 여기에 몇 가지 예제 코드입니다 :. 이것은에서 발로 방화벽의 항 포트 스캔 측정처럼 많이 소리
try:
portno = 5000
for index, data in enumerate(data_list):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('myhostname', portno))
s.sendall(data)
s.close()
portno = portno + 1
except socket.error, (value,message):
print 'Error: Send could not be performed.\nPort: ' + str(portno) + '\nMessage: ' + message
sys.exit(2)
유용하게도 문제를 해결할 수있는 정보가 충분하지 않습니다. 기본 소켓 작업을 수행하는 작은 스크립트로 범위를 좁히십시오. 여전히 이해할 수없는 경우 간단한 스크립트 만 포함하십시오. –
어떤 Python 버전을 실행하고 있습니까? 그리고 어떤 플랫폼 (OS)에서? –
프로그램에 버그가있는 것 같지만 코드를 보여줄 수없는 한별로 도움을 줄 수 없습니다. netstat 프로그램을 사용하여 조금 디버깅 할 수 있습니다.이 경우 컴퓨터의 모든 프로세스의 연결 상태가 표시됩니다. – nos