У меня есть программа, которая прослушивает порт в ожидании небольшого количества данных, чтобы сообщить ему, что делать. Я запускаю 5 экземпляров этой программы, по одному на каждый порт от 5000 до 5004 включительно.
У меня есть вторая программа, написанная на Python, которая создает сокет "s", записывает данные в порт 5000, а затем закрывается. Затем он увеличивает номер порта и создает новый сокет, подключенный к 5001. Он делает это, пока не достигнет 5004.
Первые три сокетных соединения работают просто отлично. Программы на портах с 5000 по 5002 получают данные очень хорошо и они уходят! Однако подключение четвертого сокета приводит к сообщению об ошибке «Соединение отказано». Между тем, четвертая программа прослушивания все еще сообщает, что ожидает на порту 5003. Я знаю, что она прослушивает правильно, потому что я могу подключиться к ней через Telnet.
Я пытался изменить номера портов, и каждый раз при сбое четвертого соединения.
Есть ли какие-то ограничения в системе, которые я должен проверить? У меня только одна розетка открыта в любое время на стороне отправителя, и тот факт, что я могу получить 3 из 5, устраняет многие основные шаги по устранению неполадок, о которых я могу думать.
Есть мысли? Спасибо!
--- РЕДАКТИРОВАТЬ ---
Я работаю в CentOS Linux с Python версии 2.6. Вот пример кода:
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)