Tôi đang cố chuyển đổi mã PHP thành python.Chọn định dạng trong gói() bằng cách sử dụng mô-đun struct trong python
Tất cả giá trị được gửi theo thứ tự byte mạng (kết thúc lớn).
Về cơ bản, YÊU CẦU trong đặc tả giao thức là
và phản ứng là
Tương ứng với PHP Code (corresponding DOC) là:
$transaction_id = mt_rand(0,65535);
$current_connid = "\x00\x00\x04\x17\x27\x10\x19\x80";
$fp = fsockopen($tracker, $port, $errno, $errstr);
$packet = $current_connid . pack("N", 0) . pack("N", $transaction_id);
fwrite($fp,$packet);
Tôi cố gắng để tìm mã tương ứng (for doc) trong python:
transaction_id = random.randrange(1,65535)
packet = "\x00\x00\x04\x17\x27\x10\x19\x80"
packet = packet + struct.pack("i", 0) + struct.pack("i", transaction_id)
clisocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
clisocket.sendto(packet, ("tracker.istole.it", 80))
Trong phản ứng, tôi sẽ nhận được TRANSACTION_ID cùng tôi đã gửi trong yêu cầu mà tôi không nhận được. Vì vậy, tôi đoán là, tôi không đóng gói bằng cách sử dụng định dạng chính xác.
Ngoài ra, tài liệu python không rõ ràng như của PHP. Giao thức chỉ định sử dụng định dạng Big Endian & Tài liệu PHP nêu rõ đó là định dạng dành cho Big-Endian.
Đáng buồn thay, tôi không thể hiểu định dạng nào cần sử dụng trong python. Hãy giúp tôi trong việc chọn định dạng sửa lỗi.
CHỈNH SỬA: Không nhận được bất kỳ phản hồi nào, vì vậy tôi sẽ nói nhiều hơn.
import struct
import socket
import random
clisocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
packet = "\x00\x00\x04\x17\x27\x10\x19\x80"
transaction_id = random.randrange(1,65535)
print transaction_id
packet = packet+struct.pack(">i", 0)
packet = packet+struct.pack(">i", transaction_id)
clisocket.sendto(packet, ("tracker.istole.it", 80))
res = clisocket.recv(16)
print struct.unpack(">i", res[12:16])
Theo đặc điểm kỹ thuật giao thức, tôi phải được trả về cùng INTEGER.
Hoàn doc cho giao thức là tại http://bittorrent.org/beps/bep_0015.html#udp-tracker-protocol –
Một ví dụ cho thấy làm thế nào để lấy lại dữ liệu sử dụng giao thức có tại http://linux-junky.blogspot.com/2011/10/get-seeds-peers-completed-info-from.html –