J'ai un programme qui écoute sur un port en attente d'une petite quantité de données pour lui dire quoi faire. Je cours 5 instances de ce programme, une sur chaque port de 5000 à 5004 inclusivement.Connexion refusée lors de la tentative d'ouverture, d'écriture et de fermeture d'une socket plusieurs fois (Python)
J'ai un deuxième programme écrit en Python qui crée un socket "s", écrit les données sur le port 5000, puis se ferme. Il incrémente ensuite le numéro de port et crée un nouveau socket connecté à 5001. Il le fait jusqu'à ce qu'il atteigne 5004.
Les trois premières connexions de socket fonctionnent très bien. Les programmes sur les ports 5000 à 5002 reçoivent les données très bien et ils partent! Toutefois, la quatrième connexion de socket entraîne un message d'erreur «Connexion refusée». Pendant ce temps, le quatrième programme d'écoute rapporte toujours qu'il attend sur le port 5003 - je sais qu'il écoute correctement parce que je suis capable de me connecter à l'aide de Telnet.
J'ai essayé de changer les numéros de port, et chaque fois c'est la quatrième connexion qui échoue.
Y at-il une limite dans le système que je devrais vérifier? Je n'ai qu'un seul socket ouvert à tout moment du côté de l'envoi, et le fait que je puisse en obtenir 3 sur 5 élimine beaucoup des étapes de dépannage de base auxquelles je peux penser.
Des pensées? Merci!
--- EDIT ---
Je suis sur CentOS Linux avec la version Python 2.6. Voici quelques exemples de code.
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)
Il n'y a vraiment pas assez d'informations pour résoudre ce problème. Essayez de l'affiner avec de petits scripts qui ne font que des choses de base, et si vous ne pouvez toujours pas le comprendre, incluez ces scripts simples. –
Quelle version de python utilisez-vous? Et sur quelle plateforme (os)? –
Cela ressemble à un bug dans votre programme, pas beaucoup nous pouvons vous aider à moins que vous pouvez montrer du code. Vous pouvez cependant déboguer un peu avec le programme netstat, qui montrera les états de connexion de tous les processus sur votre machine. – nos