كيف تصمم غرف المحادثة .عندما نصمم غرف المحادثة كل غرفة من غرف المحادثة نسميها بأسم معين ونعطيها عنوان معين ضمن نطاق Class D للعنونة كل شخص يريد ان يدخل غرفة يعمل انضمام لعنوان هذه الغرفة حتى يتحدث مع كل موجود داخل الغرفة.اذن في برمجة غرف المحادثة كل شخص يدخل غرفة محادثة يعمل انضمام الى المجموعة الموجودة في الغرفة على عنوان الغرفة حتى يرسل ويستلم من المجموعة وهذا ما يحدث بظبط في غرف المحادثة واكيد يتم تحديد لكل غرفة عنوان معين من قبل الشركة الخاصة ببرنامج المحادثة .وبذالك يستطيع محادثة كل المتواجدين داخل الغرفة
لنصمم مشروع جديد كما في الشكل
لنصمم مشروع جديد كما في الشكل
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgv1QkUfehs54XTR6iR9AcDg9kmqO6hwwo-WZEsjM1vEduI_OX89FBzYeIGjL5-KLrFKwZPD_H576SMnzZdybUftLAHv9Qxo823_Gt1Y2hyphenhyphen63fJy9Vvx3Jv6_BPF4hzLx5PMA7KkpzqN_8/s640/chatroomimage.png)
كما نلاحظ كونا قائمة بأسماء الغرف الموجودة داخل ListBox1 لعرض الغرف في داخلها وكل شخص جديد يدخل يختار غرفة لكي ينضم اليها وندرج Button انضمام لمجموعة نسميها jionbt وندرج Button للأرسال نسميها send_button. وندرج اداة نص textbox لعنوان الغرفة نسميها tbMulticastGroup وندرج اداة نص لمنفذ الغرفة نسميها tbPort وندرج اداة نص لأسم الشخص المختار داخل الغرفة نسميها tbname وندرج اداة نص لأستلام المحادثة من بقية اعضاء الغرفة نسميها tbMessage وندرج اداة نص لكتابة النصوص وارسالها tbMessagesend
نريد عند الضغط على اسم مجموعة يعرف عنوانها داخل tbMulticastGroup لذالك تخزن عناوين كل غرفة وعندما نختار غرفة يظهر عنوانها وداخل حدث ListBox1_SelectedIndexChanged نكتب الكود التالي
نريد عند الضغط على اسم مجموعة يعرف عنوانها داخل 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
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
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
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
كيف تصمم غرف المحادثة للأجهزة المحمولة.نفس الفكرة السابقة .عندما نصمم غرف المحادثة كل غرفة من غرف المحادثة نسميها بأسم معين ونعطيها عنوان معين ضمن نطاق Class D للعنونة كل شخص يريد ان يدخل غرفة يعمل انضمام لعنوان هذه الغرفة حتى يتحدث مع كل موجود داخل الغرفة.اذن في برمجة غرف المحادثة كل شخص يدخل غرفة محادثة يعمل انضمام الى المجموعة الموجودة في الغرفة على عنوان الغرفة حتى يرسل ويستلم من المجموعة وهذا ما يحدث بظبط في غرف المحادثة واكيد يتم تحديد لكل غرفة عنوان معين من قبل الشركة الخاصة ببرنامج المحادثة .وبذالك يستطيع محادثة كل المتواجدين داخل الغرفة
لنصمم مشروع Smart Device جديد كما في الشكل
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVXYKO89gkDwigJa8vKlXIIDHuFtDGlk6PSSv1bWtBfPRAxs6ASidal1JUz5yhm42eJ1RErIker14juwdYazC6DAyWCYTMa7KJ6OtIMPjqG7W_hNHXdubOFoWjqLif-uzqMzwJ7emt5OQ/s320/mbile+chat.png)
كما نلاحظ كونا قائمة بأسماء الغرف الموجودة داخل ListBox1 لعرض الغرف في داخلها وكل شخص جديد يدخل يختار غرفة لكي ينضم اليها وندرج Button انضمام لمجموعة نسميها jionbt وندرج Button للأرسال نسميها send_button. وندرج اداة نص textbox لعنوان الغرفة نسميها tbMulticastGroup وندرج اداة نص لمنفذ الغرفة نسميها tbPort وندرج اداة نص لأسم الشخص المختار داخل الغرفة نسميها tbname وندرج اداة نص لأستلام المحادثة من بقية اعضاء الغرفة نسميها tbMessage وندرج اداة نص لكتابة النصوص وارسالها tbMessagesend لنصمم مشروع Smart Device جديد كما في الشكل
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVXYKO89gkDwigJa8vKlXIIDHuFtDGlk6PSSv1bWtBfPRAxs6ASidal1JUz5yhm42eJ1RErIker14juwdYazC6DAyWCYTMa7KJ6OtIMPjqG7W_hNHXdubOFoWjqLif-uzqMzwJ7emt5OQ/s320/mbile+chat.png)
نريد عند الضغط على اسم مجموعة يعرف عنوانها داخل tbMulticastGroup لذالك تخزن عناوين كل غرفة وعندما نختار غرفة يظهر عنوانها وداخل حدث ListBox1_SelectedIndexChanged
والكود نفس البرنامج السابق
تحميل المثال
ليست هناك تعليقات:
إرسال تعليق