PDA

View Full Version : آيا Socket Programming ميتواند دوطرفه باشد



dr_csharp
سه شنبه 18 تیر 1387, 14:16 عصر
سلام دوستان
آیا در برنامه نویسی سوکت ( در یک Internal Network و طبق پروتکل های TCP و UDP ) همیشه باید یک سمت server و طرف دیگر client یا Client ها قرار داشته باشن؟منظورم اینه که آیا نمیشه هر دو طرف هم سرویس گیرنده باشن و هم سرویس دهنده ؟
چون مواقعی هست که ما میخوایم درصورت یک request خاص از client به server ،عملیات یا اطلاعات خاصی به client بفرستیم.

hdv212
سه شنبه 18 تیر 1387, 15:37 عصر
شدنش که میشه، به شرطی که هر دو نسخه ی نرم افزار client و server بر روی سرور و کلاینت موجود باشه، ولی اگر صرفا هدف شما انتقال اطلاعات بین کلاینت و سرور هست، با همون اتصال معمولی client/server هم میشه اطلاعات رو انتقال داد، مشکل اصلیت چیه ؟

Xcalivorse
سه شنبه 18 تیر 1387, 21:29 عصر
برای این کار میتونی از UDPClient استفاده کنی چون انعطاف بیشتری در این مورد داره. در ضمن می تونی با تعریف دو تا UDPClient روی هر کامپیوتر (به شرطی که از دوتا شماره پورت مختلف استفاده کنند) از هر کامپیوتر هم به عنوان سویس دهنده و هم یه عنوان سرویس گیرنده استفاده کنی.

dr_csharp
چهارشنبه 19 تیر 1387, 11:06 صبح
اگر صرفا هدف شما انتقال اطلاعات بین کلاینت و سرور هست، با همون اتصال معمولی client/server هم میشه اطلاعات رو انتقال داد
منظورتون از اتصال معمولی چیه ؟(اینجا اصلا صحبت DataBase نیستا،قراره یکسری اتفاق ها از server به کلاینتها اطلاع داده بشه و درصورت یکسری درخواستها از client به سرور عملیات خاصی انجام بشه)

Xcalivorse
چهارشنبه 19 تیر 1387, 11:18 صبح
بله عزیز میشه. فقط کافیه که از شماره پورت های جداگانه استفاده کنی. اگه بخوام خیالت و راحت کنم باید اینجوری بگم : در یک زمان هر کامپیوتر میتونه هم Client باشه و هم Server.

ASKaffash
چهارشنبه 19 تیر 1387, 11:32 صبح
سلام دوستان
آیا در برنامه نویسی سوکت ( در یک Internal Network و طبق پروتکل های TCP و UDP ) همیشه باید یک سمت server و طرف دیگر client یا Client ها قرار داشته باشن؟منظورم اینه که آیا نمیشه هر دو طرف هم سرویس گیرنده باشن و هم سرویس دهنده ؟
چون مواقعی هست که ما میخوایم درصورت یک request خاص از client به server ،عملیات یا اطلاعات خاصی به client بفرستیم.

سلام
اصلا دوطرفه است شاید اینکه یکی گوش میکند ودیگری متصل میشود این ابهام پیش می آید. در واقع وقتی اتصال صورت گرفت هریک برای دیگری میتواند Packet بفرستدودیگری دریافت کند

Xcalivorse
چهارشنبه 19 تیر 1387, 12:09 عصر
در صورتی که از TCPClient استفاده کنیم چی ؟ مگه اونور TCPListener نمی خواهیم. انجام اینکار با UDP به مراتب راحت تره.

hdv212
چهارشنبه 19 تیر 1387, 12:19 عصر
منظورتون از اتصال معمولی چیه ؟(اینجا اصلا صحبت DataBase نیستا،قراره یکسری اتفاق ها از server به کلاینتها اطلاع داده بشه و درصورت یکسری درخواستها از client به سرور عملیات خاصی انجام بشه)
کسی حرف دیتابیس نزد، منظورم این بود که وقتی اتصال Client/Server برقرار بشه، هم کلاینت و هم سرور میتونن فایل بفرستند و بگیرن، نیازی نیست که یک کلاینت، سرور هم بشه یا یک سرور، کلاینت هم بشه، همونی که ASKaffash عزیز در پست 6 گفت.
میتونی این مقالات رو بخونی تا دید بهتری نسبت به Socket Programming پیدا کنی :
An Introduction to Socket Programming in .NET using C# (http://www.codeproject.com/KB/IP/socketsincsharp.aspx)
EasySocket - Flexible and easy implementation of client-server architecture in C# (http://www.codeproject.com/KB/IP/easysocket.aspx)
An Asynchronous Socket Server and Client (http://www.codeproject.com/KB/IP/AsyncSocketServerandClien.aspx)

aliaaa
یک شنبه 23 تیر 1387, 12:02 عصر
دوستان من یک سورس رو تو codeProject.com دیدم که یک مسنجر ساده است که از سوکت استفاده کرده. فکر کنم کمک خوبی بهتون می کنه:
http://www.codeproject.com/KB/miscctrl/SimpleMessenger.aspx