كيف تصمم غرف المحادثة .عندما نصمم غرف المحادثة كل غرفة من غرف المحادثة نسميها بأسم معين ونعطيها عنوان معين ضمن نطاق Class D للعنونة كل شخص يريد ان يدخل غرفة يعمل انضمام لعنوان هذه الغرفة حتى يتحدث مع كل موجود داخل الغرفة.اذن في برمجة غرف المحادثة كل شخص يدخل غرفة محادثة يعمل انضمام الى المجموعة الموجودة في الغرفة على عنوان الغرفة حتى يرسل ويستلم من المجموعة وهذا ما يحدث بظبط في غرف المحادثة واكيد يتم تحديد لكل غرفة عنوان معين من قبل الشركة الخاصة ببرنامج المحادثة .وبذالك يستطيع محادثة كل المتواجدين داخل الغرفة
لنصمم مشروع جديد كما في الشكل
كما نلاحظ كونا قائمة بأسماء الغرف الموجودة داخل ListBox1 لعرض الغرف في داخلها وكل شخص جديد يدخل يختار غرفة لكي ينضم اليها وندرج Button انضمام لمجموعة نسميها jionbt وندرج Button للأرسال نسميها send_button. وندرج اداة نص textbox لعنوان الغرفة نسميها tbMulticastGroup وندرج اداة نص لمنفذ الغرفة نسميها tbPort وندرج اداة نص لأسم الشخص المختار داخل الغرفة نسميها tbname وندرج اداة نص لأستلام المحادثة من بقية اعضاء الغرفة نسميها tbMessage وندرج اداة نص لكتابة النصوص وارسالها tbMessagesend
نريد عند الضغط على اسم مجموعة يعرف عنوانها داخل tbMulticastGroup لذالك تخزن عناوين كل غرفة وعندما نختار غرفة يظهر عنوانها وداخل حدث ListBox1_SelectedIndexChanged نكتب الكود التالي
VB.NET CODE
Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
Try
If jionbt.Enabled = True Then
Select Case Trim(ListBox1.SelectedItem)
Case "كروب الشياب"
tbMulticastGroup.Text = "224.5.4.6 "
Case "كروب الشباب"
tbMulticastGroup.Text = "224.5.4.8"
Case "كروب المقاعدين"
tbMulticastGroup.Text = "224.5.4.9"
Case "كروب ورد"
tbMulticastGroup.Text = "224.5.4.10"
Case "كروب طلاب"
tbMulticastGroup.Text = "224.5.4.11 "
Case "كروب مبرمجين"
tbMulticastGroup.Text = " 224.5.4.12"
End Select
ljionto.Text = ListBox1.SelectedItem
End If
Catch ex As Exception
End Try
End Subالأن بعد ان حصلنا على عنوان الغرفة ومنفذها نريد ان ننضم اليها داخل Button انضمام لمجموعة jionbt نعمل تشغيل لدالة التنصت والأنضمام الى مجموعة نكتب الكود التالي
VB.NET CODE
myth1 = New Thread(New System.Threading.ThreadStart(AddressOf JionToGropMulticast)) myth1.Start() jionbt.Enabled = False
JionToGropMulticast هي الدالة التي ننضم بها الى المجموعة ويكون كودها
VB.NET CODE
Dim client As UdpClient Dim myth1 As Thread Sub JionToGropMulticast() Dim port As Integer = Val(tbPort.Text) client = New UdpClient(port) Dim group As IPAddress = IPAddress.Parse(tbMulticastGroup.Text) client.JoinMulticastGroup(group, 255) Dim remoteEP As IPEndPoint = New IPEndPoint(group, port) Do Dim ep As IPEndPoint = Nothing Dim buffer() As Byte = client.Receive(ep) Dim message As String = System.Text.Encoding.UTF8.GetString(buffer) Me.tbMessage.Text += message + vbCrLf Loop End Sub
بعد ان انضمينا الى المجموعة في Button للأرسال الى المجموعة send_button نستدعي دالة الأرسال لمجموعة sendTOGrop ونرسل لها عنوان المجموعة ورقم بورت التنصت للمجموعة والرسالة
VB.NET CODE
sendTOGrop(tbMulticastGroup.Text, Integer.Parse(tbPort.Text), Encoding.UTF8.GetBytes(tbname.Text & ":" & tbMessagesend.Text))
دالة sendTOGrop يكون كودها
VB.NET CODE
Public Sub sendTOGrop(ByVal mcastGroup As String, ByVal port As Integer, ByVal messageByte As Byte()) Dim ip As IPAddress = IPAddress.Parse(mcastGroup) Dim s As Socket = New Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp) s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, New MulticastOption(ip)) s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastTimeToLive, 255) Dim ipep As IPEndPoint = New IPEndPoint(IPAddress.Parse(mcastGroup), port) s.Connect(ipep) s.Send(messageByte, messageByte.Length, SocketFlags.None) s.Close() End Sub
ويكون كود البرنامج كامل
VB.NET CODE
Imports System.Net Imports System.Net.Sockets Imports System.Text Imports System.IO Imports System.Threading Public Class send_message Dim client As UdpClient Dim myth1 As Thread Sub JionToGropMulticast() Dim port As Integer = Val(tbPort.Text) client = New UdpClient(port) Dim group As IPAddress = IPAddress.Parse(tbMulticastGroup.Text) client.JoinMulticastGroup(group, 255) Dim remoteEP As IPEndPoint = New IPEndPoint(group, port) Do Dim ep As IPEndPoint = Nothing Dim buffer() As Byte = client.Receive(ep) Dim message As String = System.Text.Encoding.UTF8.GetString(buffer) Me.tbMessage.Text += message + vbCrLf Loop End Sub Public Sub sendTOGrop(ByVal mcastGroup As String, ByVal port As Integer, ByVal messageByte As Byte()) Dim ip As IPAddress = IPAddress.Parse(mcastGroup) Dim s As Socket = New Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp) s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, New MulticastOption(ip)) s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastTimeToLive, 255) Dim ipep As IPEndPoint = New IPEndPoint(IPAddress.Parse(mcastGroup), port) s.Connect(ipep) s.Send(messageByte, messageByte.Length, SocketFlags.None) s.Close() End Sub Private Sub send_button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles send_button.Click sendTOGrop(tbMulticastGroup.Text, Integer.Parse(tbPort.Text), Encoding.UTF8.GetBytes(tbname.Text & ":" & tbMessagesend.Text)) End Sub Private Sub jionbt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles jionbt.Click myth1 = New Thread(New System.Threading.ThreadStart(AddressOf JionToGropMulticast)) myth1.Start() jionbt.Enabled = False End Sub Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged Try If jionbt.Enabled = True Then Select Case Trim(ListBox1.SelectedItem) Case "كروب الشياب" tbMulticastGroup.Text = "224.5.4.6 " Case "كروب الشباب" tbMulticastGroup.Text = "224.5.4.8" Case "كروب المقاعدين" tbMulticastGroup.Text = "224.5.4.9" Case "كروب ورد" tbMulticastGroup.Text = "224.5.4.10" Case "كروب طلاب" tbMulticastGroup.Text = "224.5.4.11 " Case "كروب مبرمجين" tbMulticastGroup.Text = " 224.5.4.12" End Select ljionto.Text = ListBox1.SelectedItem End If Catch ex As Exception End Try End Sub Private Sub send_message_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing If jionbt.Enabled = False Then Try 'Dim group As IPAddress = IPAddress.Parse(tbMulticastGroup.Text) ' client.DropMulticastGroup(group, 255) client.Close() myth1.Abort() Catch ex As Exception MsgBox(ex.Message) End Try End If End Sub End Class
برنامج بناء غرف محادثة للأجهزة المحمولة
كيف تصمم غرف المحادثة للأجهزة المحمولة.نفس الفكرة السابقة .عندما نصمم غرف المحادثة كل غرفة من غرف المحادثة نسميها بأسم معين ونعطيها عنوان معين ضمن نطاق Class D للعنونة كل شخص يريد ان يدخل غرفة يعمل انضمام لعنوان هذه الغرفة حتى يتحدث مع كل موجود داخل الغرفة.اذن في برمجة غرف المحادثة كل شخص يدخل غرفة محادثة يعمل انضمام الى المجموعة الموجودة في الغرفة على عنوان الغرفة حتى يرسل ويستلم من المجموعة وهذا ما يحدث بظبط في غرف المحادثة واكيد يتم تحديد لكل غرفة عنوان معين من قبل الشركة الخاصة ببرنامج المحادثة .وبذالك يستطيع محادثة كل المتواجدين داخل الغرفة
لنصمم مشروع Smart Device جديد كما في الشكل
كما نلاحظ كونا قائمة بأسماء الغرف الموجودة داخل ListBox1 لعرض الغرف في داخلها وكل شخص جديد يدخل يختار غرفة لكي ينضم اليها وندرج Button انضمام لمجموعة نسميها jionbt وندرج Button للأرسال نسميها send_button. وندرج اداة نص textbox لعنوان الغرفة نسميها tbMulticastGroup وندرج اداة نص لمنفذ الغرفة نسميها tbPort وندرج اداة نص لأسم الشخص المختار داخل الغرفة نسميها tbname وندرج اداة نص لأستلام المحادثة من بقية اعضاء الغرفة نسميها tbMessage وندرج اداة نص لكتابة النصوص وارسالها tbMessagesend
نريد عند الضغط على اسم مجموعة يعرف عنوانها داخل tbMulticastGroup لذالك تخزن عناوين كل غرفة وعندما نختار غرفة يظهر عنوانها وداخل حدث ListBox1_SelectedIndexChanged
والكود نفس البرنامج السابق
-------------------------------------------------
قائمة كتبي
خطوة بخطوة نحو قاعدة بيانات ترضي العميل بالفجوال بيسك دوت نت

خطوة بخطوة لتعلم لغة سي وسي بلاس

بروتوكولات الشبكات TCP,UDP,IP وبناء التطبيقات بالبروتوكول الملائم فيجوال بيسك دوت نت
