PDA

View Full Version : سوال: متفاوت بودن src port و dst port در اتصال با CSocket ؟



Moharram
شنبه 16 تیر 1397, 11:51 صبح
سلام

در یک برنامه کلاینت/سروری، برنامه سرور رو با پورت مشخص مثلا 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 رو هم بررسی کردم اما به نتیجه خاصی نرسیدم.

pe32_64
چهارشنبه 17 مهر 1398, 22:43 عصر
درود
باید تو تابع CSocket::Create در کد کلاینت پورت مورد نظر رو تایین کنید تا از همین پورت استفاده شود.

سلام

در یک برنامه کلاینت/سروری، برنامه سرور رو با پورت مشخص مثلا 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 رو هم بررسی کردم اما به نتیجه خاصی نرسیدم.