حالا میخواهیم تمامی مطالب مورد نظر را به صورت کد بنویسیم و بررسی کنیم این سناریو توسط NET. چگونه قابل پیادهسازی است.
در مرحله اول با وصل شدن به یک Server آشنا میشویم؛ این سرور یک آدرس IP است که میتوانید مانند مثال هفته پیش از روی نام دامین آن، این آدرس را به دست بیاورید یا اینکه آن را به صورت دستی وارد کنید. به مثال زیر دقت کنید:
IPAddress test1 = IPAddress.Parse("192.168.1.1");
کد بالا از روی یک آدرس IP که به صورت یک رشته متنی است یک شیء از کلاس IPAddress میسازد.
سپس باید یک نقطه اتصال با توجه به آدرس IP که در بالا به دست آوردیم و یک پورت خاص ایجاد کنیم.
IPEndPoint ie = new IPEndPoint(test1, 8000);
در اینجا از روی IP و پورت مورد نظر یک نقطه اتصال ایجاد میکنیم.
سپس باید یک Socket که نشاندهنده سرور ما است ایجاد کنیم. به کد زیر دقت کنید:
Socket newserver = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
newserver.Bind(ie);
newserver.Listen(5);
Socket newclient = newserver.Accept();
ابتدا یک شیء از کلاس Socket میسازیم و به سازنده آن سه مقدار میدهیم که هر کدام مشخصکننده یک خاصیت از این شیء بوده که به صورت زیر است:
AddressFamily: مشخصکننده شمای آدرسدهی یک شیء Socket است.
SocketType: مشخص میکند ارتباط با این Socket به چه صورت خواهد بود.
ProtocolType: نوع پروتکل مورد نظر برای انتقال اطلاعات را مشخص میکند که از نوع Tcp/IP باشد یا Udp.
بعد از اینکه یک شیء از کلاس Socket ایجاد کردیم، آن را به نقطه تماس یعنی ie متصل میکنیم؛ یعنی تمامی درخواستها روی آن نقطه تماس توسط این سرور قابل دریافت و پردازش است.
سپس باید به سرور بگوییم منتظر برقراری یک ارتباط از سوی یک کلاینت باشد. برای اینکار از الگوی Listen استفاده میکنیم. این الگو که یک پارامتر از نوع عدد صحیح دریافت میکند مشخص میسازد سرور تا چه تعداد ارتباط از سمت کلاینتها را میتواند قبول کند. در مثال بالا عدد ۵ نشاندهنده این است که حداکثر پنج ارتباط میتواند با این سرور برقرار شود.
سپس باید ارتباطهایی را که با سرور برقرار میشود مدیریت کنیم. برای این کار میتوانیم به صورت زیر عمل کنیم:
Socket newclient = newserver.
Accept();
وقتی متد درخواست ارتباط برای یک سرور فرستاده شود، با متد Accept آنرا قبول میکنیم، سپس یک شیء از کلاس Socket برمیگرداند که نشاندهنده یک کلاینت است و از طریق آن میتوانید اطلاعات را از کلاینت بخوانید یا به آنها دسترسی داشتهباشید.
برای ارسال اطلاعات میتوان از متد Send استفاده کرد؛ این متد یک ارائه از byteها را برای سرور یا یک کلاینت یا به صورت کلی برای یک Socket دیگر ارسال میکند.
برای بازیابی اطلاعات میتوان از الگوی Receive استفاده کرد؛ این الگو مانند متد Send یک آرایه از بایتها را دریافت میکند و مقدار دریافت شده از یک سوکت را در آن ذخیره میکند.
این کدها برای سمت سرور بود، حالا یک کلاینت قرار است به این سرور متصل شود و یک رشته متنی به صورت Hello Click را به سرور ارسال کند.
IPAddress host = IPAddress.Parse("192.168.1.1");
IPEndPoint hostep = new IPEndPoint(host, 8000);
Socket sock = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
sock.Connect(hostep);
نخست مانند کدهای بالا ما باید آدرس IP و پورت سرور را داشتهباشیم و سپس با استفاده از آنها یک نقطه تماس ایجاد میکنیم، سپس به شیء ایجاد شده از کلاس Socket میگوییم به نقطه اتصال ـ که همان سرور است ـ وصل شود، سپس در کد زیر یک رشته متنی را به صورت یک ارائه از byteها تبدیل میکنیم و آنرا برای سرور ارسال میکنیم.
sock.Send(Encoding.ASCII.GetBytes("Hello Click"));
امیر بهاءالدین سبطالشیخ
در تپش این هفته، ماجرای فریب و تعرض در پوشش عرفانهای دروغین و رمالی را بررسی کردیم
گزارش «جامجم» درباره دستاوردهای زبان فارسی در گفتوگو با برخی از چهرههای ادب معاصر
معاون وزیر بهداشت: