برای کار با Socket
نیاز هست تا شما یک Socket
در سمت کلاینت باز کنید و یک Socket
در سرور. Socket
در سی شارپ هم از این قاعده مستثنی نیست.
برای کار با Socket
، همیشه در سمت سرور باید به آن Socket
گوش داده شود تا وقتی از کلاینت داده ارسال می شود، داده را دریافت و دوباره به همان Socket
باز شده اطلاعات را بفرستد.
Socket
در سی شارپ
برای تبادل داده با Socket
نیاز است تا داده ها تبدیل به آرایه ای از byte
شوند.
برای استفاده از Socket
باید فضانام System.Net.Sockets را اضافه کنید.
آی پی سرور و پورتی که Socket
باید به آن متصل شود را مشخص می کنید.
وقتی اطلاعات دریافت شود در متغیر byte
ریخته می شود.
در کد زیر یک رشته متشکل از Id و Number و quantity برای سرور ازسال می خواهد شد که در خط ۱۹ تبدیل به آرایه ای از بایت ها می شود.
در خط ۲۳ یک Socket
ساخته می شود که پارامترهای آن به شرح زیر است:
AddressFamily
: شبکه ای که سوکت از آن استفاده می کند. SocketType
: نوع سوکت است که یک طرفه و دوطرفه بودن آن را تعیین می کند. ProtocolType
: نوع پروتکل استفاده را بیان می کند. پس از ساخت Socket
آن را در خط ۲۶ به آی پی و پورت مشخص شده کانکت می کنیم و در خط ۲۷ داده ها ارسال می شود.
پس از ارسال داده ها، در خط ۲۹ داده ها دریافت می شود و در متغیر byte قرار می گیرد.
در کدهای زیر سوکت به یک آی پی با پورت مشخص باز می شود و اطلاعات را ارسال و دریافت می کند. این عمل هر ۱۵ دقیقه یک بار انجام می شود.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
using System; using System.Net; using System.Text; using System.Net.Sockets; using System.Threading; namespace VPSSocketChecking { internal class Program { private static void Main() { const int port = 120; var bytes = new byte[1024]; const string ip = "Your IP"; const string Id = "123"; const string Number = "00000000"; const string quantity = "1"; var sendMsg = Encoding.UTF8.GetBytes($"{Id}&{Number}&{quantity}"); while (true) { var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); try { socket.Connect(ip, port); socket.Send(sendMsg, SocketFlags.None); Console.Write("Monitoring..."); socket.Receive(bytes, SocketFlags.None); Console.WriteLine("OK."); } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { socket.Close(); } Thread.Sleep(900000); } } } } |
برای اطلاعات بیشتر در مورد متدهای استفاده شده می توانید از لینک های زیر استفاده کنید:
Encoding.UTF8.GetBytes
Socket
AddressFamily
SocketType
ProtocolType
socket.Connect
SocketFlags
socket.Receive