Ce sont des raisons possibles pour erreur de socket EINPROGRESS dans solaris?
Ce sont des raisons possibles pour erreur de socket EINPROGRESS
dans Solaris?
Comment on peut vérifier la cause?
tcp api est : connectez
Cela signifie que vous avez une asynchrones chose se passe, et c'est pas encore fait. Veuillez préciser ce que l'appel système dont vous parlez si vous voulez des réponses constructives.
Je l'ai déjà rappelé vous de la façon d'aller sur l'ajout de l'homme pages extrait sur la façon d'obtenir des informations plus détaillées sur ce sujet ici: stackoverflow.com/q/8277540/694576
De toute façon, nous montrant au moins votre de code du client serait certainement aider ...
Je l'ai déjà rappelé vous de la façon d'aller sur l'ajout de l'homme pages extrait sur la façon d'obtenir des informations plus détaillées sur ce sujet ici: stackoverflow.com/q/8277540/694576
De toute façon, nous montrant au moins votre de code du client serait certainement aider ...
OriginalL'auteur Syedsma | 2011-11-26
Vous devez vous connecter pour publier un commentaire.
Vous avez un socket non bloquant et vous appelez
connect()
. Depuisconnect()
besoins de la 3-way handshake (donc un aller-retour réseau), il se bloque en attente pour le SYN-ACK dans le blocage de sockets, ou vous donne une indication qu'il n'a pas réussi encore dans les sockets non bloquant. Normalement, les sockets non bloquant retour EAGAIN/EWOULDBLOCK vous dire qu'ils ne pouvaient pas progresser et vous devriez essayer de nouveau: ce n'est pas exactement le cas,connect()
retourne EAGAIN/EWOULDBLOCK quand il n'y a pas de libre-ports éphémères pour vous dire que vous devriez essayer de nouveau plus tard; donc il y a une autre erreur de non-blocage connect: EINPROGRESS, qui vous dit que l'opération est en cours et vous devriez vérifier son état plus tard.Pour vérifier l'état plus tard, le support sera prêt pour writability, de sorte que vous pouvez utiliser
select()
/poll()/...
de test pour que, après que vous devrezgetsockopt(...SO_ERROR...)
pour obtenir le succès/l'échec état de votre connexion() de l'opération.seulement connect() renvoie EINPROGRESS.
Je me demandais, si la sélection retourne true (sélectionnez pour l'écriture par exemple), connectez-vous réussi, mais la dernière errno pour être ensemble était EINPROGRESS. Si cette erreur est ignoré dans ce cas ?
OriginalL'auteur ninjalj
Vous êtes de toute évidence en utilisant les sockets non bloquant et vous avez besoin d'utiliser
select()
oupoll()
pour déterminer quand vous pouvez écrire (connect est une forme d'écriture) à la prise. C'est la même chose lorsque vous souhaitez écrire des données pour le socket connecté; vous ne vous contentez pas d'écrire et de vous connecter quand vous en avez envie, vous demandez le support pour vous dire quand vous pouvez faire des choses et en attendant, vous faire quelque chose d'autre (l'idée d'opérations de socket asynchrones).Vérifier votre manuel pour la vérité absolue sur la disposition des codes d'erreur:
OriginalL'auteur trojanfoe
J'ai eu cette erreur en essayant de se connecter (à l'aide de FFMPEG) à une adresse IP locale non valide (c'est à dire de sous-réseau incorrect), la correction de l'hôte correction du problème
Je n'appelle pas
connect
directement, je suis en utilisant un client de réseau:FFMPEG
. Il peut-être un bug dans la mise en œuvre du client. Je ne peux que rapporter ce que j'ai vu et comment il a été fixé. Espérons aide d'une autre personne comme il m'a fait.OriginalL'auteur Kyle Redfearn