私はubuntuマシンでPython 2.7を使用しています。ソケットを接続しようとしたときにECONNABORTEDとは何ですか?
クライアントがサーバーに接続しようとしています。私は、非ブロッキングソケットに期待されるEINPROGRESSを取得します。
は、接続が成功したかどうかを確認するために、私は{}の接続のためのmanページが示唆するものを実行します。# EINPROGRESS The socket is nonblocking and the connection cannot be
# completed immediately. It is possible to select(2) or poll(2) for
# completion by selecting the socket for writing. After select(2)
# indicates writability, use getsockopt(2) to read the SO_ERROR option at
# level SOL_SOCKET to determine whether connect() completed successfully
# (SO_ERROR is zero) or unsuccessfully (SO_ERROR is one of the usual error
# codes listed here, explaining the reason for the failure)
サーバーがオフラインになっている、これは私にECONNREFUSEDを与えます。ここまでは順調ですね。
接続が失敗すると、何度か試してみます。
問題:2回目に同じソケットに接続しようとすると、{connect}がECONNABORTEDを送信します。これは{connect}のmanページにありません。どういう意味ですか?
これがうまく動作しても、私があなただったら私はやりません。以前ソケットAPIを技術的に再利用できるかどうかはわかりませんが、Linuxは気にしないようですが、MacOSではEINVALを取得しています。毎回新しいソケットを開きます。 – Celada