الأربعاء، 28 مارس 2012

بناء غرف للدردشة للأجهزة المحمولة والحواسيب

كيف تصمم غرف المحادثة .عندما نصمم غرف المحادثة كل غرفة من غرف المحادثة نسميها بأسم معين ونعطيها عنوان معين ضمن نطاق 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


 
برنامج بناء غرف محادثة للأجهزة المحمولة
كيف تصمم غرف المحادثة للأجهزة المحمولة.نفس الفكرة السابقة .عندما نصمم غرف المحادثة كل غرفة من غرف المحادثة نسميها بأسم معين ونعطيها عنوان معين ضمن نطاق Class D للعنونة كل شخص يريد ان يدخل غرفة يعمل انضمام لعنوان هذه الغرفة حتى يتحدث مع كل موجود داخل الغرفة.اذن في برمجة غرف المحادثة كل شخص يدخل غرفة محادثة  يعمل  انضمام الى المجموعة الموجودة  في الغرفة على عنوان الغرفة حتى يرسل ويستلم من المجموعة وهذا ما يحدث بظبط في غرف المحادثة واكيد يتم تحديد لكل غرفة عنوان معين من قبل الشركة الخاصة ببرنامج المحادثة .وبذالك يستطيع محادثة كل المتواجدين داخل الغرفة
لنصمم مشروع Smart Device جديد كما في الشكل
كما نلاحظ كونا قائمة بأسماء الغرف الموجودة داخل  ListBox1 لعرض الغرف  في داخلها وكل شخص جديد يدخل يختار غرفة لكي ينضم اليها وندرج Button انضمام لمجموعة نسميها jionbt وندرج Button للأرسال نسميها send_button. وندرج اداة نص textbox  لعنوان الغرفة نسميها tbMulticastGroup وندرج اداة نص لمنفذ الغرفة نسميها tbPort وندرج اداة نص لأسم الشخص المختار داخل الغرفة نسميها tbname وندرج اداة نص لأستلام المحادثة من بقية اعضاء الغرفة نسميها tbMessage وندرج اداة نص لكتابة النصوص وارسالها tbMessagesend  
نريد عند الضغط على اسم مجموعة يعرف عنوانها داخل tbMulticastGroup لذالك تخزن عناوين كل غرفة وعندما نختار غرفة يظهر عنوانها وداخل حدث  ListBox1_SelectedIndexChanged
والكود نفس البرنامج السابق


تحميل المثال

ليست هناك تعليقات: