Python으로 작성된 Minecraft Classic 서버를 설계하고 있지만 패킷을 올바르게 보내는 방법을 모르겠습니다. 소켓을 설정하는 방법을 알고 있지만 프로토콜에 필요한 형식으로 소켓을 보내는 방법은 잘 모릅니다. 프로토콜을 이해합니다. 파이썬에서 구현하는 방법이 아닙니다. 게시 할 코드가 없으며 하트 비트 만 내 질문과 관련이 없습니다. 여러 서버의 출처를 살펴 봤지만 이해가되지 않습니다.Python으로 작성된 Minecraft Classic 서버에서 패킷을 보내는 방법
답변
Dan D.이 언급했듯이 struct.pack을 사용하여 프로토콜에서 요청한대로 데이터의 서식을 지정할 수 있습니다. http://docs.python.org/library/struct.html의 설명서에는 몇 가지 예가 있습니다.
그런 다음 패킷의 모양을 자세히 설명하는 http://www.minecraftwiki.net/wiki/Classic_Server_Protocol#Packet_Protocol의 패킷 구조를 살펴 봐야합니다. 패킷 설명에 따르면 struct.pack 형식 문자열은 처음 4 바이트의 "Bbh"와 유사합니다. 당신은 패딩 모두 패킷 64 바이트 문자열 + 1,024 바이트의 바이너리 부분의 나머지 부분이를 완료해야합니다 ID 1 및 프로토콜 버전 7과 플레이어 식별 패킷에 대한
struct.pack("Bbh", 0, 1, 7)
.
편집 : 그냥 기억 된 파이썬은 네이티브 빅 엔디안이 아니므로 포맷 문자열에 던져 넣을 수도 있습니다.
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. Minecraft 서버 패킷을 보내려면 어떻게해야합니까?
- 2. 핑 패킷을 보내는 방법
- 3. 원시 패킷을 보내는 방법
- 4. 자신의 프로토콜 패킷을 보내는 방법?
- 5. Java/Android : 도착시 패킷을 수신하는 동안 패킷을 보내는 방법
- 6. Python으로 작성된 CoffeeScript와 유사한 언어
- 7. Python으로 작성된 SQL Database GUI
- 8. 서버에서 패킷을 스니핑하고 차단합니다.
- 9. GCDAsyncSocket을 사용하여 바이너리 패킷을 보내는 방법
- 10. 웹 RTC가있는 UDP 패킷을 보내는 방법 - Javascript?
- 11. 패킷을 보내는 호스트의 이름을 얻는 방법
- 12. python으로 메일을 보내는 방법 ssmtp와 smtplib
- 13. Python에서 Minecraft Server로 로그인 패킷을 전송하는 중 오류가 발생했습니다.
- 14. 패킷을 생성하고 보내는 C 코드
- 15. 로컬 서버에서 이메일을 보내는 방법
- 16. 서버에서 differen 페이지를 보내는 방법
- 17. Python Parse Minecraft 패킷
- 18. Python으로 작성된 RSS 리더의 피드를 구문 분석하려고합니다.
- 19. Python으로 작성된 FORTRAN에서 함수에 액세스하려면 어떻게해야합니까?
- 20. Python으로 작성된 프로그램을 AppleScript로 작성할 수 있습니까?
- 21. glassfish 서버에서 메일을 보내는 방법은 무엇입니까?
- 22. 페이로드가없는 UDP 패킷을 보내는 이유는 무엇입니까?
- 23. vxworks에서 IP 패킷을 보내는 방법은 무엇입니까?
- 24. 프록시를 통해 패킷을 보내는 방법은 무엇입니까?
- 25. 알려진 MAC 주소로 패킷을 보내는 루비
- 26. Silverlight에서 서버에서 클라이언트로 이벤트를 보내는 방법
- 27. Kannel SMS 서버에서 메시지 상태를 보내는 방법.
- 28. j2se 서버에서 j2me 클라이언트로 데이터를 보내는 방법
- 29. PHP 서버에서 Android 앱으로 알림을 보내는 방법
- 30. iText + RPC. 서버에서 클라이언트로 PDF를 보내는 방법
은'struct.pack()'을 사용합니다. [이미 파이썬 minecraft 서버가 여러 개 존재한다는 것에주의하십시오. (내 위시리스트에있는 것은 파이썬 클라이언트이다.) –
@DanD. 나는 다른 사람들이 존재했다는 사실을 알고있었습니다. 여러 서버의 출처를 살펴 봤지만 이해가되지 않습니다. 실제로'struct.pack()'에 대한 것을 전체 응답에 넣을 수 있습니까? – elijaheac