リッスンしていないランダムなIP /ポートにUDPパケットを送信すると、pythonはそれを送信したサーバを閉じてクラッシュします。リッスンしていないip/portに送信すると、PythonのUDPクラッシュが発生する
私は何か間違っているのですか、これはバグですか?問題の
例:
import socket
# Launch the server
try:
Sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
Sock.bind(("127.0.0.1", 25565))
except:
print("Failed to launch server")
# Send a packet to a random (closed) place
# Comment out this line to prevent error
Sock.sendto(b'', ("127.0.0.1", 4623))
while True:
# Wait for data
print("Listening for data")
data, addr = Sock.recvfrom(1024)
エラー:
line 18, in data, addr = Sock.recvfrom(1024) ConnectionResetError: [WinError 10054] An existing connection was forcibly closed by the remote host
それを修正しました!私はその事例がまさにここで起こっていると思います。なぜICMP到達不能の原因が失敗するのですか?それを検出するコードを作成するにはどうすればよいですか(try:except?以外)recvfromが失敗する唯一の方法ですか?なぜ私はドキュメントでこれについて読んでいないのですか? IMCPのウィキペディアのページを見ると、多くの種類のエラーがあります。彼らはPythonで同じですか?非常に多くの質問を申し訳ありません、修正していただきありがとうございます! – Andev
@Andev:これらすべての追加の質問に答えるのは、元の質問の文脈から外れています。なぜ、どのようにrecvfromが失敗するか、これらのいくつかはOSに依存する方法があります。 Pythons recvfromで使用されているネイティブ関数のドキュメント、つまり[recvfrom(2)](https://linux.die.net/man/2/recvfrom)、[recv(2)](https: //linux.die.net/man/2/recv)。そして、これらのICMPやこれに類するものについて、[Advanced Network Programming](https://www.google.de/search?q=advanced+network+programming) –
ありがとうございました!私は前にそのウェブサイトに出くわしていないので、私は見てみましょう! – Andev