نوشته شده توسط
Moharram
سلام
در یک برنامه کلاینت/سروری، برنامه سرور رو با پورت مشخص مثلا 4000 تعریف و اجرا می کنم و با برنامه کلاینت به IP و Port اون متصل میشم. تا اینجا مساله ای نیست ...
وقتی با نرم افزار WireShark جزئیات Packet های منتقل شده بین کلاینت و سرور را بررسی می کنم یه مساله ای بوجود میاد. به هنگام اتصال در برنامه کلاینت با پورت 4000 یک پورت بنام src port در WireShark نمایش داده میشه که در هر بار اتصال یه مقدار Random ای میگیره، در حالیکه dst port همون مقدار 4000 رو داره. تو سمت سرور هم src port برابر با 4000 هستش اما dst port همون مقداری رو گرفته که src port تو کلاینت گرفته ...
از جزئیات پروتکل tcp اطلاعی ندارم، شاید لازمه اتصال tcp همین باشه، اما یه ادعایی مطرح شده که مجبور شدم به این جزئیات توجه کنم.
یه سخت افزاری دارم که قراره نقش سرور رو داشته باشه و با یک نرم افزار به عنوان کلاینت به اون متصل بشم. یه اشکالی پیش میاد که ارسال دیتا توسط سخت افزار قطع میشه و حتی با وجود داشتن Ping اتصال دوباره به اون ممکن نیست. ادعایی که از طراح سخت افزار مطرح شده اینه که باید شماره پورت تغییر نکنه و یه جوری باید مقدار اون پورت Override بشه تا بشه دوباره به دستگاه متصل شد. وفتی با WireShark تست کردم متوجه شدم که src port هر سری با هر اتصال تغییر میکنه ... ؟
پارامترهای تابع Accept از کلاس CSocket رو هم بررسی کردم اما به نتیجه خاصی نرسیدم.