টিসিপিতে কীভাবে বাইনারি বার্তা প্রেরণ এবং প্রতিক্রিয়া সংরক্ষণ করা যায়


0

মালিকানাধীন প্রোটোকলের জন্য আমাকে একটি ক্লায়েন্ট বিকাশ করতে হবে এবং কাস্টম বার্তাগুলি প্রেরণ করে উত্তরটি সন্ধান করে বিদ্যমান সার্ভারের আচরণ বুঝতে সক্ষম হওয়া খুব দরকারী। "টেলনেট" প্রোটোকলটি বাইনারি না করেই সেই উদ্দেশ্যে উপযুক্ত হবে perfect

সুতরাং বর্তমানে, আমি একটি ফাইলটিতে আমার বার্তাটি (হেক্স সম্পাদক ব্যবহার করে) mymsgলিখেছি এবং আমি নেটক্যাট ব্যবহার করে এটি পাঠানোর চেষ্টা করছি:

cat msg | netcat 127.0.0.1 1234

এর সাথে আমার সমস্যাটি হ'ল নেটক্যাটটি ইওএফ পৌঁছানোর পরে ঠিক থেমে যায় তাই আমি কখনই সার্ভারের উত্তর দেখতে পাই না। কোনও পরামর্শ?

(অবশ্যই, কেউ মালিকানাধীন সার্ভার ব্যবহার করে মক আপ চালাতে পারেন nc -l -p 1234)

উত্তর:


1

আমি কিছুটা বিস্মিত হই, কারণ আমি ভেবেছিলাম যে নেটকাটের কেবল এই ক্ষেত্রে পরিচালনা করার জন্য একটি স্পষ্ট বৈশিষ্ট্য রয়েছে। আমি ভেবেছিলাম যে এটি স্ট্যান্ডার্ড ইনপুট এবং সকেট উভয়ই থেকে ইওএফ অর্জন না করা পর্যন্ত এটি অপেক্ষা করেছিল। সম্ভবত এটি একটি সময়সীমা সম্পন্ন জিনিস; স্ট্যান্ডিনে ইওএফ পাওয়ার পরে নির্দিষ্ট সময়ের জন্য সকেট থেকে পড়া চালিয়ে যাওয়ার বিকল্প আছে কি না তা দেখতে আপনার নেটক্যাট ডকুমেন্টেশন পরীক্ষা করে দেখুন।

অথবা আপনি ক্লডজ উত্তরটি ব্যবহার করতে পারেন:

(cat msg; sleep 42) | netcat 127.0.0.1 1234

আমি অনুমান করি আপনি যে বিকল্পটি উল্লেখ করেছেন তা হ'ল-এন। এটি আমার জন্য বাক্সটির বাইরে কাজ করে না :(। এছাড়াও আমি হয়ত কিছু মিস করছি তবে
ক্লডজ দ্রবণটি

@ ব্যবহারকারী 229790: আমি মনে করি -wকিছু আলাদা করে, এটি স্পষ্টতই বলে "যদি কোনও সংযোগ এবং স্টিডিন ... এর চেয়ে বেশি অলস থাকে ...", ইওএফ নিষ্ক্রিয় নয়। -iঅন্যদিকে মনে হচ্ছে এটি চেষ্টা করার মতো, "পাঠানো ও প্রাপ্ত পাঠ্যের লাইনের মধ্যে একটি বিলম্ব সময়ের ব্যবধান নির্দিষ্ট করে" "
ববি

0

আমি এই অজগর স্ক্রিপ্টটি নিয়ে কাজটি করতে এসেছি।

#!/usr/bin/env python

import socket
import sys

if (len(sys.argv) != 3):
    print "usage: " + sys.argv[0] + " host port <message >answer"
    print ""
    print "if you want to create a fake server side: nc -l -p port"
else:
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect((sys.argv[1], int(sys.argv[2])))
    msg = sys.stdin.read()
    s.send(msg)
    answer = s.recv(1024)
    print answer
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.