تقنية

Telnet في بايثون 3.12: لماذا يضاعف write البايت 255؟

FF يتكرر في الخرج
بيانات مؤلفة. [1] [2] [3]

نفحص كتابة قديمة بملتقط مؤلف، بلا خادم. [1] [2] [3]

الخلاصة السريعة

يضاعف write بايت IAC في بيانات المثال. [1] [2] [3]

  • مدخلنا b"A\xffB" ثلاثة بايتات؛ لا سطر جديد بالخرج. [1] [2] [3]
  • IAC قيمته 255؛ يظهر مرتين في الخرج. [1] [2] [3]
  • يلتقط Sink أربعة بايتات: b'A\xff\xffB'. [1] [2] [3]
  • Telnet() بلا عنوان لا يتصل؛ ملتقطنا محلي. [1] [2] [3]
  • اختبرنا 3.12.14؛ مهجورة منذ 3.11 ومحذوفة في 3.13. [1] [2] [3]

المثال

import telnetlib
class Sink:
 def sendall(self,data): self.data=data
 def close(self): pass
t=telnetlib.Telnet()
t.sock=Sink()
t.write(b"A\xffB")
print(t.sock.data)
t.close()

[1] [2] [3]

التحويل

الخرج هنا ليس المدخل: يتكرر FF، بينما يبقى A وB. لم تضف الكتابة سطرًا جديدًا في مثالنا. نستبدل المقبس بملتقط يسجل بايتات sendall؛ لم نستقبل ردًا. [1] [2] [3]

ثلاثة إلى أربعة بايتات
ملتقط محلي. [1] [2] [3]

الإصدار والحدود

المكتبة مهجورة منذ 3.11 ومحذوفة من المكتبة القياسية منذ 3.13. هذا فحص لسلوك قديم، لا إعداد اتصال أو بديل حديث. لا نختبر التفاوض أو القراءة أو نجاح نقل فعلي. [1] [2] [3]

المراجع

  1. Python3.12: telnetlib
  2. CPython3.12.14: telnetlib.py
  3. Python: telnetlib removal
  4. موضوع تك: لغة بايثون — مفردات
  5. موضوع تك: تطبيقات بايثون — مفردات

أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.