PDA

View Full Version : سوال: مشکل در برنامه نویسی سوکت و بر قراری اتصال اولیه مشتری با سرور



ali208
دوشنبه 07 شهریور 1390, 23:41 عصر
با سلام
برنامه ای چت ساده نوشتم که کار نمی کنه ، یک برنامه ساده هم دانلود کردم که آن هم کار نکرد. فکر کنم اشکال از IP یا شماره پورت باشه. ولی نمی دونم چطوری چک کنم از دستور NETSTAT-a استفاده کردم ولی کامند پرامپت قبول نمیکنه. مشکل برنامم اینکه که کانکت نمی شه. ادرس IP مربوط به مودم را باید به برنامه بدم یا کارت شبکه را؟
ممنون می شم راهنمائی کنید.

aram_2
سه شنبه 08 شهریور 1390, 00:13 صبح
شما باید دو تا برنامه رو اجرا کنید یکی سرور که همیشه باید اجرا بشه و اون یکی کلاینت.پورتی که انتخاب می کنید برای اتصال اولا باید بیشتر از 1023 باشه و همون رو هم باید تو کلاینت وارد کنید(شماره پورت یکسان)
بعد شما برای اتصال به سرور باید آدرس آی پی سرور رو به کلاینت بدید.حالا بگید کجای کار ایراد داره و با کدوم زبان نوشتی تا کمکتون کنیم

ali208
سه شنبه 08 شهریور 1390, 09:43 صبح
با سلام
شماره پورتها یکسان هستند)9050( برنامه سرور و مشتری را در تو کامپیوتر جداگانه با انترنتهای جداگانه تست کردم.ابتدا سرور کانتت می شود بعد مشتری یک تست باکس هم برای نشان دادن وضعیت ارتباط گذاشتم بعد از یک ثانیه پیغام ارور در برقراری ارتباط به من میده.
ادرس سرور هم را از این وب سایتهای تشخیص ادرس بدست می آورم.برنامه هم از نوع غیر همزمان هستش.

aram_2
سه شنبه 08 شهریور 1390, 12:32 عصر
کد رو بفرست.ببینم مشکل کجاست .هم سرور و هم کلاینت رو بفرست

ali208
سه شنبه 08 شهریور 1390, 13:40 عصر
کد رو بفرست.ببینم مشکل کجاست .هم سرور و هم کلاینت رو بفرست

دوست عزیز سرور و کلایت را ارسال کردم. ممنون از اینکه وقت می گذارید و بررسی میکنید.

aram_2
سه شنبه 08 شهریور 1390, 20:09 عصر
من دات نت رو سیستم ندارم.تو اولین فرصت نگاه می کنم.

ali208
سه شنبه 08 شهریور 1390, 22:07 عصر
ممنون منتظرم

aram_2
چهارشنبه 09 شهریور 1390, 13:09 عصر
دوست عزیز برنامه هیچ مشکلی نداره..مشکل شما تو دادن آدرس به کلاینت هست که بوسیله اون آدرس باید به سرور وصل بشه..شما تو آدرس اتصال به سرور 127.0.0.1 واردک کردید ..این کد فقط رو لوکال جواب میده.اگه بخاید سرور شما جای دیگه باشه دو تا کار باید بکنید 1-اگه سرور تو شبکه هست که آدرس اون رو تو برنامه کلابنت تو خط زیر قرار بدید
IPEndPoint iep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 9050);
یعنی به جای 127.0.0.1 آدرس سرور(مثلا 192.168.0.100) رو قرار بدید.
2- اگه سرور شما دارای آی پی ولید هست و خارج از شبکه شماس باید چک کنید که این شماره پورت اصلا بازه.منظورم تو روتریه که شما از طریق اون به نت وصل میشید.شما کار اول رو انجام بدید..چون کار دوم کانفیگ روتر هست و ربطی به برنامه نداره.پس تو یه شبکه داخلی برنامه تو اجرا کن..

ali208
چهارشنبه 09 شهریور 1390, 17:04 عصر
ممنون که وقت گذاشتید
این برنامه که براتون فرستادم اخرین تغیراتش هست که با ادرس داخلی هم کار نکرد. اول ادرس خارجی را داده بودم که کار نکرد. شماره پورت را چطوری و با چه دستوری در داس کامند چک کنم؟ دستور netstat-a خطا می ده و کار نمی کنه لااقل در کامپیوتر من این جوریه. ممنون میشوم باز راهنمایی کنید.

aram_2
چهارشنبه 09 شهریور 1390, 17:22 عصر
برای من کار کرد.مشکلی هم نداشت جواب داد.حتی با چند تا کلاینت هم چک کردم جواب داد.مشکلی نداشت.مشکل همون خطی است که گفتم.آدرس سرور رو داخل کلاینت بنویسید.
بله دستور netstat -a درسته و باید اجرا بشه..قاعتدا مشکلی نباید باشه.اگه نتونستید اجراش کنید برید از طریق داس برید تو محل نصبش
C:\Windows\System32
بعد از اونجا اجراش کنید.

ali208
چهارشنبه 09 شهریور 1390, 23:42 عصر
ممنون. برنامه بصورت محلی راه افتاد. یک سوال برام پیش امده. ایا امکان داره دو سوکت جداگانه را در یک برنامه بطور همزمان اجرا کرد؟ به عنوان مثال یک سوکت از نوع TCP و سوکت دیگر ار نوع UDP باشد که تصویر را یک طرفه از سرور به مشتری با UDP فرستاده شود و و همزمان مشتری و سرور با هم با پروتکل TCP غیر همزمان چت کنند؟.

aram_2
پنج شنبه 10 شهریور 1390, 00:12 صبح
نه عزیزم.مکانیزم جفتشون فرق داره.TCP پروتکل قابل اعتماد هست و مکانیزمهای مفصلی از جمله کنترل ازدحام و جریان و...داره اما UDP خیلی ساده است...خیلی..نمیشه

ali208
پنج شنبه 10 شهریور 1390, 18:07 عصر
بازم ممنون. برنامه را با دیال آپ چک کردم بخوبی کار میکنه، همانطور که گفتید احتمالا روتر مودم پورت ها می بنده و باعث مشکل میشود.