私はPythonで基本的なソケットクライアントプログラムを開発しています。例外処理の仕方は完全にはわかりません。私が好きなPythonソケットプログラミング - 例外処理
TCP_IP = '..............'
TCP_PORT = 4950
MESSAGE = "o3"
BUFFER_SIZE = 2048
data = ""
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(5.0)
try:
s.connect((TCP_IP, TCP_PORT))
except socket.error:
#write error code to file
s.close()
try:
s.sendall(MESSAGE)
except socket.error:
#write to file or whatever
s.close()
try:
data = s.recv(BUFFER_SIZE)
except socket.error:
#write to file or whatever
s.close()
finally:
s.close()
コードが動作しているが、私べき巣のtry/catchブロックかどうかはわからない:これは私が今までやったことありますか?私はsocket.socket
をtry/catchブロックに入れるべきですか?
2番目の質問は、s.settimeout()
は私の場合どうしますか?私がドキュメントを理解する限り、5秒後に例外がスローされますが、何のために? connect
と同じですか、それともsendall
とrecv
でも同じですか?
この素晴らしい答えをありがとう!もう1つの質問ですが、元のバージョン(try/catchブロックを1つずつ使用する)と例外がsocket.connect()で捕捉されるとどうなりますか?すべてのソケット操作が正しく実行されていないと思いますか? –