التعديل المشترك LIPP - برمجة المقبس TCP - إرسال رد

StackOverflow https://stackoverflow.com/questions/1524912

  •  19-09-2019
  •  | 
  •  

سؤال

لدي برنامج صغير جدا يفتح مقبس ويقبل اتصال. ثم الاستيلاء على IP البعيد والمنفذ.

أرغب في إرسال رسالة نصية إلى الكمبيوتر البعيد (Telnet) وإغلاق الاتصال.

لا يمكنني تحديد الوظيفة التي هي لإرسال رسالة إلى عميل Telnet.

ال دليل الصفوف يسرد وظيفة تسمى "إرسال إلى" ولكنها تقول إنها مآخذ UDP وأنا أعمل مع مآخذ TCP.

آمل أن يقول لي شخص ما ما هي الدالة المناسبة، أو، إذا كانت "إرسال إلى" هي الوظيفة المناسبة، وكيفية استخدامها بشكل صحيح.

شكرًا

(setq my-socket (ccl:make-socket :connect :passive :format :text
        :local-port 20000 :reuse-address t))

(setq connection (ccl:accept-connection my-socket))

(setq remote-host (ccl:remote-host connection))

(setq remote-port (ccl:remote-port connection))
هل كانت مفيدة؟

المحلول

وثائق CCL: تقبل الاتصال تقول إنها ترجع دفق.

لذلك يمكنك استخدام عمليات الإدخال / الإخراج العادية (مثال: برنس) من LISP المشترك مع هذا الدفق. بالنسبة لعمليات الإدخال / الإخراج، راجع فصول hyperspec على "تدفقات" و "الطابعة".

(defun st (port)
  (ccl:with-open-socket (socket :connect :passive
                                :format :text
                                :local-port port
                                :reuse-address t)
    (with-open-stream (stream (ccl:accept-connection socket))
      (princ "CCL example response" stream))))

; example call
(st 20000)

نصائح أخرى

في SBCL (باستخدام Usocket)، استخدم وظيفة تدفق المقبس لإرجاع دفق LISP، ثم استخدم التنسيق والكتابة وما شابه ذلك لإرسال الأشياء عبر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top