PDA

View Full Version : مبتدی: خواندن داده های دریافتی Socket



alireza_kaka
دوشنبه 02 شهریور 1394, 17:59 عصر
سلام دوستان
فرض کنید من با سوکت زیر به یه سرور متصل میشم

Socket SK = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
SK.Connect("127.0.0.0", 443);

نمیدونم حرفام درسته یا نه
اما من یه سری داده به سرور میفرستم و اون یه سری داده در جواب من میفرسته میخواستم بدونم چطوری میشه داده هایی رو که سرور میفرسته رو بخونم.ممنون

bitasoft.ir
سه شنبه 04 مهر 1402, 21:23 عصر
برای خواندن داده‌هایی که از سوی سرور به شما ارسال می‌شود از ابزارهایی که در .NET Framework ارائه شده استفاده می‌کنیم. در اینجا، به شما نحوه خواندن داده‌ها از یک Socket در C# را آموزش می‌دهم:
Stream از Socket استخراج کنید:
ابتدا باید یک NetworkStream از Socket خود استخراج کنید. NetworkStream یک کلاس برای خواندن و نوشتن داده‌ها از و به Socket است.
NetworkStream stream = new NetworkStream(SK);
خواندن داده‌ها:
برای خواندن داده‌ها از NetworkStream، می‌توانید از متدهای مختلفی مانند Read و ReadAsync استفاده کنید. به عنوان مثال:
byte[] buffer = new byte[1024]; // برای خواندن داده‌ها
int bytesRead = stream.Read(buffer, 0, buffer.Length);
این کد 1024 بایت از داده‌ها را از NetworkStream به buffer می‌خواند. تعداد بایت‌هایی که واقعاً خوانده شده است، در bytesRead ذخیره می‌شود.
پردازش داده‌ها:
داده‌هایی که از NetworkStream خوانده‌اید، معمولاً به صورت آرایه بایت در buffer قرار دارند. شما می‌توانید این داده‌ها را بعداً به تنظیمات خاصی تبدیل کنید (مثلاً به رشته) و یا آن‌ها را برای پردازش به دیگر بخش‌های کد خود منتقل کنید.
بستن Stream و Socket:
پس از پایان کار با NetworkStream و Socket، بهتر است آنها را ببندید تا منابع سیستم را آزاد کنید. به این ترتیب:
stream.Close();
SK.Close();
با انجام این مراحل، می‌توانید داده‌هایی که از سرور به شما ارسال می‌شوند را با استفاده از Socket و NetworkStream در C# خوانده و پردازش کنید. توجه داشته باشید که از try-catch برای مدیریت خطاها نیز استفاده کنید تا هنگام بروز خطا در ارتباط با سرور به درستی با آن برخورد کنید.





سلام دوستان
فرض کنید من با سوکت زیر به یه سرور متصل میشم

Socket SK = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
SK.Connect("127.0.0.0", 443);

نمیدونم حرفام درسته یا نه
اما من یه سری داده به سرور میفرستم و اون یه سری داده در جواب من میفرسته میخواستم بدونم چطوری میشه داده هایی رو که سرور میفرسته رو بخونم.ممنون