PDA

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



amin_sltny
جمعه 18 اسفند 1391, 08:43 صبح
سلام دوستان

من دارم یه بازی آنلاین با سی شارپ می سازم و برنامه نویسی سوکت اونا به روش زیر دارم می نویسم

سمت سرور: یه سوکت تعریف کردم و در اونا در حالت شنیدن قرار دادم.حالت شنیدن در یه حلقه قرار داره و وقتی با یه کلاینت connect میشه بعد از اضاقه کردن اون در یه لیست دوباره به شنیدن میره.
Sktserver.Bind(ipEndPoint);
var locker = new object();

while (true)
{
lock (locker)
{
Console.ForegroundColor = ConsoleColor.White;
Sktserver.Listen(10);
ListskClinet.Add(Sktserver.Accept());
var clientep = (IPEndPoint) ListskClinet[ListskClinet.Count - 1].RemoteEndPoint;
var th = new Thread(new ThreadStart(() => Players.Recivedate((EndPoint) clientep)));
th.Start();


}
}
سمت کلاینت: وقتی برنامه را load می کنه با این سرور connect میشه.

برای ارسال و دریافت هم من این کارا کردم در دوسمت برنامه یه thread ایجاد کردم که همیشه دریافت کنه اما خطا میده خطاشم اینه که میگه مقداری برای دریافت وجود نداره می خواستم کمکم کنید که باید چه کار کنم.
نمی دونم چه طوری مقادیر برای سرور و کلاینتم بفرستم.در حالی که تعداد کاربرانم زیاده و یه مدیریت نیاز داره اگه میشه کمکم کنید.

amin_sltny
جمعه 18 اسفند 1391, 12:10 عصر
کسی نیست!!!!!!

abbas.oveissi
جمعه 18 اسفند 1391, 12:41 عصر
کسی نیست!!!!!!

من خوندم سوالت،اما خب مثلا من یه چت درست کردم منطقش مثل مال تو بود،برای هر کلاینت یک ترد ایجاد میکرد اما شبیه مال شما نیست.خواستم براتون بذارم چطور ساختم اما گوگل درایو باز نمیشه :( کد هام توی اونه :(

amin_sltny
جمعه 18 اسفند 1391, 13:38 عصر
من خوندم سوالت،اما خب مثلا من یه چت درست کردم منطقش مثل مال تو بود،برای هر کلاینت یک ترد ایجاد میکرد اما شبیه مال شما نیست.خواستم براتون بذارم چطور ساختم اما گوگل درایو باز نمیشه :( کد هام توی اونه :(

ممنون دوست عزیر اینم یقین شانس منه دیگه!!

به نظرتون با TCPClient و networkstream بنویسیم بهتره؟

اگه کسی یه جزوه ای مثالی برا دانلود داره لطف کنه و بذاره!

abbas.oveissi
جمعه 18 اسفند 1391, 13:56 عصر
ممنون دوست عزیر اینم یقین شانس منه دیگه!!

به نظرتون با TCPClient و networkstream بنویسیم بهتره؟

اگه کسی یه جزوه ای مثالی برا دانلود داره لطف کنه و بذاره!

آقا یه چیزی پیدا کردم یادم افتاد من چی کار میکردم،البته اون زمان ها از خودم نوشتم اما نمیدونم چقدر اصولیه :دی
من اومده بود یه کلاس درست کرده بودم به client مثلا و بعد هر کلاینت که وصل میشد یدونه آبجکت از client میساختم و داخل هر آبجکت آن یک ترد برای اون کلاینت بود تا پیام ها را بگیرد.

public class client
{
public Socket Socket;
public string User;
public Thread thread_receiving;
}

میتونی از کتاب کم حجم TCPIP Sockets in C#‎ Practical Guide for Programmers استفاده کنی،یه کتاب فارسی هم توی بازار هست که ترجمه آقای جعفرنژاد قمیه(فکر کنم ترجمه همین کتابس که گفتم )

_behnam_
جمعه 18 اسفند 1391, 14:22 عصر
اگه با اصول سوکت نویسی آشنایی ندارید
بهتره اوایل از کلاس های ُSocket . ٌWinsock استفاده کنید توی پروژه هاتون. اینجوری هم پروژه هاتون زودتر جلو میره و هم با سوکت نویسی آشنا میشید.

amin_sltny
جمعه 18 اسفند 1391, 19:10 عصر
اگه با اصول سوکت نویسی آشنایی ندارید
بهتره اوایل از کلاس های ُSocket . ٌWinsock استفاده کنید توی پروژه هاتون. اینجوری هم پروژه هاتون زودتر جلو میره و هم با سوکت نویسی آشنا میشید.

میشه یه نمونه پروژه بذارید؟؟

_behnam_
جمعه 18 اسفند 1391, 21:10 عصر
بفرمایید.
بعضی ها ویژوال بیسیک هستن که میتونید به DLL تبدیل کنید
http://barnamenevis.org/showthread.php?387955-%D8%B3%D9%88%DA%A9%D8%AA-%D9%BE%D8%B1%D9%88%DA%AF%D8%B1%D8%A7%D9%85%DB%8C%D 9%86%DA%AF-Server-and-Multi-Clients
http://www.codeproject.com/Articles/11422/Winsock-NET
http://forum.ragezone.com/f144/tcp-socket-class-2-0-a-727203/
و همچنین DLL بنام OSWinsock که تو گوگل سرچ بزنید هست