Pythonで書かれたMinecraft Classicサーバーを設計していますが、パケットを正しく送信する方法がわかりません。私はソケットを設定する方法を知っていますが、わからない部分は、プロトコルで必要な形式でそれらを送信する方法です。プロトコルを理解していますが、Pythonで実装する方法ではありません。投稿するコードは本当にありません。ちょうど心拍です。私の質問には関係ありません。私はいくつかのサーバーのソースを見てきましたが、私はそれらを理解していません。Pythonで書かれたMinecraft Classicサーバーでパケットを送信する方法
答えて
Dan D.が述べたように、struct.packを使用して、プロトコルの要求に従ってデータをフォーマットすることができます。 http://docs.python.org/library/struct.htmlのドキュメントにはいくつかの例があります。
次に、パケットがどのように表示される必要があるかについて詳しく説明しているhttp://www.minecraftwiki.net/wiki/Classic_Server_Protocol#Packet_Protocolのパケット構造を見てください。パケットの記述によると、最初の4バイトの "Bbh"のようなものを探しているstruct.pack形式の文字列が必要です。 ID 1とプロトコルバージョン7を持つプレイヤー識別パケットの場合
struct.pack("Bbh", 0, 1, 7)
あなたは、パケット64バイトの文字列+ 1024バイトのバイナリ部分、パディングとの両方の残りの部分でこれを完了する必要があります。
編集:ちょっと記憶されたPythonはネイティブのビッグエンディアンではないかもしれないので、フォーマット文字列にもそれを入れたいかもしれません。
struct.pack("!Bbh", 0, 1, 7)
あなたは、パケットフォーマットの例を見つけることができるとmyne2サーバ
https://bitbucket.org/andrewgodwin/myne2/src/236deac8cd2f/myne/core/constants.py
https://bitbucket.org/andrewgodwin/myne2/src/236deac8cd2f/myne/core/packeter.py
のソースにpython module of the week page for structを見ることによって、それらを処理する方法にもいくつかの非常に有用な情報を持っています。
あなたの答えをありがとう! – elijaheac
- 1. Python Parse Minecraftパケット
- 2. pingパケットの送信方法
- 3. パケット送信/受信の処理方法
- 4. cpmで書かれたnpmパケットをデバッグする方法
- 5. Scapyで送信するパケットをキャプチャする方法は?
- 6. ソケットを介して送信されたpythonパケットはクリアテキストですか?
- 7. パケットが送信者から受信者に転送される方法
- 8. SMSパケット経由でアプリケーションを送信する方法
- 9. パケットをネットワークカードに送信する前にパケットを変更する方法
- 10. サーバーから送信されたイベントをロードする方法
- 11. winsock、RST、ACKまたはRSTパケットを送信する方法
- 12. .NETでUDPパケットを送受信する
- 13. C#でパケットを送信するには?
- 14. NSOutputStreamでパケットをすぐに送信またはフラッシュする方法
- 15. tcpポートでバイナリ通信プロトコルを使用してパケットを送信する方法
- 16. パケット再送信
- 17. TCP再送信:再送信されるパケットの数はいくつですか?
- 18. 自分のアンドロイドアプリで送受信されたパケットをキャプチャする最も良い方法は何ですか?
- 19. クライアントからサーバーへのメッセージをPythonでサーバーに送る方法
- 20. getusermediaで記録されたストリームをサーバーnodejsにリアルタイムで送信する方法
- 21. C#またはC/C++クライアントからパケットを受信し、サーバーにリダイレクトし、サーバーから受信し、クライアントに送信する方法
- 22. サーバーに送信されたパスワードを暗号化する方法
- 23. UDPパケットをクライアントに送信するとき、サーバーは代わりに送信したパケットを受信しますか?
- 24. pythonサーバーに削除要求を送信する方法
- 25. 送信キューから重複したUDPパケットを削除する方法
- 26. Silverlightでサーバーからクライアントにイベントを送信する方法
- 27. Webアプリケーションでサーバーからクライアントにメッセージを送信する方法
- 28. 送信パケットにVLANタグを挿入する方法
- 29. 連続してudpパケットを送信する方法GCDAsyncUdpSocket
- 30. PHP Raw HTTPパケットを送信する方法
は 'struct.pack()'を使用します。 [いくつかのpythonのminecraftサーバがすでに存在することに注意してください。 (私の欲しいものは、Pythonのミニクラフトクライアントです)] –
@DanD。私は他人が存在していたことを知っていました。私はいくつかのサーバーのソースを見てきましたが、私はそれらを理解していません。実際に 'struct.pack()'のことを完全な答えに入れることができますか? – elijaheac