الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

المساعدة في شرح الاكواد !

بدأه viop student في 28 أبريل 2010 · 10 رد · 1,630 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمه الله وبركاته

أرجو من لهم الخبرة في الفيجول بيسك دوت نت 2005 مساعدتي في شرح الاكواد التي سأ درجها علماً بأني أحتاج المساعدة منذ فترة طويلة وأملي بالله فيكم بارك الرحمن فيكم ياأهل الخبرة وزادكم من فضله :)

      Imports System.Text
Imports System.Net
Imports System.Net.Sockets
Imports System.IO
Imports System.Threading
Imports System.Data
Imports System.Data.OleDb
Public Class frmServer

    Private SvrStpd As Boolean

    Private ServerSckt As Socket
    Private ServerClientSckt As Socket

    Private ASCII As New ASCIIEncoding
    Private Delegate Sub NoPrmdelegatet()
    Private Delegate Sub nStrdelegatet(ByVal Data As String)
    Const portNumber As Integer = 1234
    Public Delegate Sub Funmsg(ByVal t As String)
    ' Private nudPort As Integer = 1234
    Private IPAddr As String = "127.0.0.1"
    Public Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long

    Private Sub frmServer_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing


        ' SvrStpd = True
        Call EndComm()
        '  Me.Hide()

    End Sub
    'create Begin Receive to server socket 

    Private Sub CallBack(ByVal ar As IAsyncResult)

        Dim delegate1 As New NoPrmdelegatet(AddressOf Connected)
        Dim delegate2 As New NoPrmdelegatet(AddressOf DisConnected)

        ' Me.Invoke(delegate1)
        ' Try
        ' server  stopped , disconnect
        If SvrStpd = True Then
            Me.Invoke(delegate2)
            Exit Sub
        End If
        ServerClientSckt = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
        ServerClientSckt = ServerSckt.EndAccept(ar)
        SendData("cmdlogin$$")
        Me.Invoke(delegate1)

        Dim bytes(500000) As Byte
        ServerClientSckt.BeginReceive(bytes, 0, bytes.Length, SocketFlags.None, AddressOf Receive, bytes)
        ' Catch Exp As Exception

        'Exit Sub

        ' End Try
    End Sub
    'this function to recive data and turn it Reader function 

    Private Sub Receive(ByVal ar As IAsyncResult)

        Dim delegate1 As New NoPrmdelegatet(AddressOf DisConnected)
        Dim bytes(500000) As Byte
        '  Try

        'recieve text from client
        bytes = CType(ar.AsyncState, Byte())
        'Dim bytes() As Byte = CType(ar.AsyncState, Byte())
        Dim numbytes As Int32 = ServerClientSckt.EndReceive(ar)
        If numbytes = 0 Then
            ServerClientSckt.Shutdown(SocketShutdown.Both)
            ServerClientSckt.Close()
            Me.Invoke(delegate1)

        Else
            Dim Recv As String = ASCII.GetString(bytes, 0, numbytes)

            'Clear  buffer
            Array.Clear(bytes, 0, bytes.Length)

            Dim delegate2 As New nStrdelegatet(AddressOf Reader)
            Dim args() As Object = {Recv}
            Me.Invoke(delegate2, args)
            'Receiving again
            ServerClientSckt.BeginReceive(bytes, 0, bytes.Length, SocketFlags.None, AddressOf Receive, bytes)
        End If
        ' Catch Exp As Exception

        'Exit Sub

        ' End Try
    End Sub
    'send data

    Public Sub SendData(ByVal data As String)

        Dim bytes(500000) As Byte
        bytes = ASCII.GetBytes(data)
        ServerClientSckt.Send(bytes) 'Send the data to the client
        With frmVGR.txtROnline
            .SelectionStart = .Text.Length
            .SelectedText = Me.Username.Text & "->" & data & vbCrLf
        End With
    End Sub
    'this function to display message on chatting that  (sesrver/usesr) is connected 

    Private Sub Connected()

        Me.Hide()
        frmVGR.Text = Application.ProductName & " Server- Connected"


        frmVGR.txtROnline.Text += "Connected at " & Now.ToString & "." & vbCrLf
        frmVGR.Show()

    End Sub
    'this function to display message on chatting that  (sesrver/usesr) is DisConnected 

    Private Sub DisConnected()

        If SvrStpd = True Then
            SvrStpd = False
            Exit Sub
        End If
        frmVGR.Text = Application.ProductName & "Server- Not Connected"



        If SvrStpd = False Then
            frmVGR.txtROnline.Text += "Disconnected at " & Now.ToString & "." & vbCrLf
        End If
    End Sub

    'close socket
    Public Sub EndComm()



        ServerClientSckt.Close()
        ServerSckt.Close()


    End Sub
    'this function is datat parser 

    Sub Reader(ByVal Data As String)
        Dim command As String
        Dim VUsername, VPassword, grname As String
        Dim ln As Integer
        'Dim smsdata = Data
        ln = InStr(1, Data, "$$")
        command = Strings.Left(Data, ln - 1)
        Data = Mid(Data, ln + 2, Len(Data))

        If Trim(command) = "sndloging" Then

            ln = InStr(1, Data, "|")
            VUsername = Strings.Left(Data, ln - 1)
            VPassword = Mid(Data, ln + 1, Len(Data))
            Call Funlogin(VUsername, VPassword)

        ElseIf Trim(command) = "sndGrouplst" Then

            Call FunGroup()
        ElseIf Trim(command) = "sndUserLst" Then

            ln = InStr(1, Data, "|")
            VUsername = Strings.Left(Data, ln - 1)
            grname = Mid(Data, ln + 1, Len(Data))
            Call Funsession(grname, VUsername)
            Call FunUser(grname)
        ElseIf Trim(command) = "sndLeave" Then

            Call leavsession(Data)
        End If


    End Sub
    Private Sub FunmsgN(ByVal data As String)
        ' frmVGR.txtROnline.Text += data & vbCrLf
        ' frmVGR.Show()

    End Sub
    'this function to verify user name and Password to user 
    Private Sub Funlogin(ByVal VUsername As String, ByVal VPassword As String)
        Dim dbconn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "VGADB.mdb")
        dbconn.Open()
        Dim dbcomm As New OleDbCommand("select * from userstbl where username ='" & VUsername & "' and  Password='" & VPassword & "' ", dbconn)
        If dbcomm.Connection.State = ConnectionState.Closed Then
            dbcomm.Connection.Open()
        End If
        Dim dbReader As OleDbDataReader = dbcomm.ExecuteReader()
        If dbReader.Read = True Then

            SendData("Welcome$$")

        Else

            SendData("Recmdlogin$$")
        End If
        dbReader = Nothing
        dbcomm.Connection.Close()
        dbconn.Close()
    End Sub
    'get on group list of users on send it to user
    Private Sub FunGroup()
        Dim arrGroupLst As String = ""
        Dim dbconn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "VGADB.mdb")
        dbconn.Open()

        Dim dbcomm As New OleDbCommand("select * from grouptbl", dbconn)
        Dim dbReader As OleDbDataReader = dbcomm.ExecuteReader()
        If Not dbReader Is Nothing Then
            frmGroup.Lstgroup.Items.Clear()
            ' While dbReader.Read
            'frmGroup.Lstgroup.Items.Add(dbReader("grname"))
            ' Dim ObjData As String = dbReader("grname")
            'Dim params() As Object = {ObjData}
            'Me.Invoke(New Funmsg(AddressOf FunGroupN), params)
            While dbReader.Read
                Dim gn As String = dbReader("grname")
                arrGroupLst += gn & "|"

            End While

            arrGroupLst = "sndGroupLst$$" + arrGroupLst
            SendData(arrGroupLst)

            '  End While
        End If
        dbReader = Nothing
        dbcomm.Connection.Close()
        dbconn.Close()
    End Sub
    Private Sub FunGroupN(ByVal data As String)
        frmGroup.Lstgroup.Items.Add(data)
    End Sub
    'this function is temp to record the users which are connected by server
    Private Sub Funsession(ByVal grname As String, ByVal UserName As String)

        'MsgBox(grname + UserName)
        Dim dbcnn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "VGADB.mdb")
        dbcnn.Open()
        Dim cmd = New OleDbCommand("select * from sessiontbl where [username]='" & UserName & "'   ", dbcnn)
        cmd.Connection.Close()
        If cmd.Connection.State = Data.ConnectionState.Closed Then
            cmd.Connection.Open()
        End If
        Dim rd As OleDbDataReader = cmd.ExecuteReader()
        If rd.Read Then
            Dim cmd2 = New OleDbCommand("delete from sessiontbl where [username]='" & UserName & "' ", dbcnn)
            cmd2.Connection.Close()
            If cmd2.Connection.State = Data.ConnectionState.Closed Then
                cmd2.Connection.Open()
            End If
            cmd2.ExecuteNonQuery()
            cmd2.Connection.Close()
        End If
        cmd.Connection.Close()
        rd = Nothing

        '===============================

        Dim cmd1 = New OleDbCommand("INSERT INTO sessiontbl(username,grname)" & _
              " VALUES('" & UserName & "','" & grname & "')", dbcnn)


        If cmd1.Connection.State = Data.ConnectionState.Closed Then
            cmd1.Connection.Open()
        End If

        cmd1.ExecuteNonQuery()
        cmd1.Connection.Close()
        dbcnn.Close()

    End Sub
    'this function  to remove  the users which are leave  from chating

    Private Sub leavsession(ByVal username As String)


        Dim dbcnn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "VGADB.mdb")
        dbcnn.Open()
        Dim cmd = New OleDbCommand("select * from sessiontbl where [username]='" & username & "'   ", dbcnn)
        cmd.Connection.Close()
        If cmd.Connection.State = Data.ConnectionState.Closed Then
            cmd.Connection.Open()
        End If
        Dim rd As OleDbDataReader = cmd.ExecuteReader()
        If rd.Read Then
            Dim cmd2 = New OleDbCommand("delete from sessiontbl where [username]='" & username & "' ", dbcnn)
            cmd2.Connection.Close()
            If cmd2.Connection.State = Data.ConnectionState.Closed Then
                cmd2.Connection.Open()
            End If
            cmd2.ExecuteNonQuery()
            cmd2.Connection.Close()
        End If
        cmd.Connection.Close()
        rd = Nothing
        dbcnn.Close()
        '===============================
        SendData("cmdclose$$")
    End Sub
    'get on users list of user and  send  to it

    Private Sub FunUser(ByVal grname As String)
        Dim dbconn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "VGADB.mdb")
        dbconn.Open()

        Dim arrUserLst As String = ""
        Dim dbcomm As New OleDbCommand("select * from sessiontbl where [grname] ='" & grname & "'  ", dbconn)
        Dim dbReader As OleDbDataReader = dbcomm.ExecuteReader()
        If Not dbReader Is Nothing Then

            While dbReader.Read
                Dim gn As String = dbReader("username")
                arrUserLst += gn & "|"

            End While
            arrUserLst = "sndUserLst$$" + grname + ":" + arrUserLst
            SendData(arrUserLst)
        End If
        dbReader = Nothing
        dbcomm.Connection.Close()
        dbconn.Close()
    End Sub
    Private Sub FunUserN(ByVal data As String)
        frmVGR.Lstuser.Items.Add(data)
    End Sub
    Private Function GetIPAddr() As String

        Dim strHostName As String
        Dim strIPAddress As String
        strHostName = Dns.GetHostName()
        strIPAddress = Dns.GetHostEntry(strHostName).AddressList(0).ToString()
        GetIPAddr = strIPAddress
    End Function
    'this button to craete listner of server socket 


    Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click

        Dim Addr As IPAddress = Nothing


        '=============
        Dim dbconn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "VGADB.mdb")
        dbconn.Open()
        Dim dbcomm As New OleDbCommand("select * from userstbl where username ='" & Username.Text & "' and  Password='" & Password.Text & "' ", dbconn)

        Dim dbReader As OleDbDataReader = dbcomm.ExecuteReader()
        If dbReader.Read = False Then
            MsgBox("username Or Password is error,Please Try Again")
            Exit Sub
        Else
            'Try
            'Addr = Dns.GetHostEntry(IPAddr).AddressList(0)
            Addr = IPAddress.Parse(IPAddr)
            Dim EP As New IPEndPoint(Addr, portNumber)
            ServerSckt = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
            ServerSckt.Bind(EP)
            ServerSckt.Listen(0)
            'txtIP.Enabled = False
            ServerSckt.BeginAccept(AddressOf CallBack, Nothing)
            'Catch Exp As Exception
            'Exit Sub
            'End Try
            dbReader = Nothing
            dbcomm.Connection.Close()
            dbconn.Close()
        End If




    End Sub

    Private Sub Cancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel.Click
        'SvrStpd = True
        ' Call EndComm()
        End
    End Sub

    Private Sub Username_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Username.TextChanged

    End Sub
End Class

هذ

#2

السلام عليكم

من محتويات الكود يبين ان البرنامج لخادم سيرفر عبر النت أو الشبكه

لوكان هناك اي معلومات ناقصه ولم ترسلها ارجو إرسالها لكي تسهل علينا الشرح لك

وبسبب الكود الطويل حنا ناخذه قطاعي

هل تعرف معنى الكود الموجود في الصوره

post-227437-12724543566692_thumb.jpg

#3

حياك الرحمن وبياك عمر التعزي ،،

صحيح الكود يعمل كما قلت أخي الفاضل عمر ،، الكود ليس بناقص لكن هذا فقط للخادم أعتقد لو فهمت شيئاً منه أستطيع أن أعرف ماذا يعمل كود العميل لدي أتمنى ذلك حقيقة ،، الصورة المرفقة ماهي الا تصريحات للمكتبات الموجودة بأمر Imports

لكن حقيقة لا أعلم مافائدتها أو لماذا أضيفت لهذا الكود ،،،

تم تعديل هذه المشاركة بواسطة viop student في 28 أبريل 2010 في 17:30

#4

أخى أنت أتى بالكود فقط والبرنامج يحتوى على Forms مثل

frmVGR

frmGroup

ويحتوى على قاعدة بيانات

VGADB.mdb

فلو البرنامج كامل عندك ضعه حتى نقدر على فهمه

 وممّا زادنـــي شرفــاً وتيهــاً   **  وكدت بأخمصي أطأ الثريّا

دخولي تحت قولك يا عبادي  **   وأن صيّرت أحمد لي نبيّـاً

#5

أهلا بك أخي الفاضل عمرو

أدرجت البرنامج بالتأكيد أريد فهم الاكواد لانه البرنامج عمله لهذه اللحظة بسيط لم تدرج له أي تحسينات كما هو موضح لي أني لاأريد عمل هذا البرنامج بل أريد فقط منكم ياسادة شرح هذه الاكواد ،، البرنامج عبارة عن خيار للخادم وخيار للعميل أستطيع من خلالهم الاتصال

ببعضهم البعض هذا مشروع تخرجي فأرجو منكم المساعدة بالاكوااد وشرحها صحيح اني لم أعمله لوحدي لكن مطالب بي بفهم الاكواد حتى أستطيع تحسينه للافضل ،، شاكرة لكم ذلك ياكرام ،،

VGRPrj.rar

تم تعديل هذه المشاركة بواسطة viop student في 28 أبريل 2010 في 19:31

#6

أختى الكريمه (أنثى صح؟)

المرفقات ناقصه تحتوى على ملف .sln فقط

 وممّا زادنـــي شرفــاً وتيهــاً   **  وكدت بأخمصي أطأ الثريّا

دخولي تحت قولك يا عبادي  **   وأن صيّرت أحمد لي نبيّـاً

#7

أهلا بك أخي عمرو الصعيدي

المشروع لم أستطيع تحميله بالكامل يبدو أن لدي مشكلة ما لكن قد صورت جزء من عمل هذا المشروع لعل في الأمر نفعاً أخي الفاضل ،، وأدرجت الاكواد التي أنا بحاجة ماسة لشرحها كاأصحاب خبرة فضلاً لاأمراً منكم ،،

.

.

أشكر كرمك ،،

الخطوة التالية.doc

أكواد المشروع.doc

#8

السلام عليكم

صحيح هي عباره عن مكاتب طيب إش هيا ؟

الإجابه:

هذي المكاتب توضح أولا ماذا أستخدم البرنامج وعليه يمكن انقراء بان البرنامج الخادم الستخدم المكاتب التاليه:

أولا:

Imports System.Text: تستخدم في معالجة النصوص وتحويله وترميزها

Imports System.Net: تستخدم في الشبكات

Imports System.Net.Sockets: تستخدم في إستخدامتا السوكت وهي كيف ممكن ان ترسل نصوص عبر النت او الشبكه من خلال بورتات

Imports System.IO : تستخدم في تعامل مع الملفات الفهارس في القرص الصلب

Imports System.Threading : تستخدم لتشغيل عدد برامج في نفس الوقت

Imports System.Data : إستخدام قواعد البيانات

Imports System.Data.OleDb: إستخدام قاعدة البيانات (ممكن أكس او ملفات نصيه تكست)

مما سبق ممكن أفترض إفتراض 100% إن شاء الله كمايلي:

واضح من المعلومات انه برنامج دردشه او كونفرس رووم حيث يوجد العديد من الكلينت وواحد سيرفل يستخدم السوكت للتراسل ويخزن معلومات معينه في قوعد معلومات معينه ويستخدم الثرد لتخاطب مع أكثر من عميل

أرجو أخذ هذي الفرضيه بانها صح ومن خلال الكود حنوضح هل هي صح ام خطا في حالة الخطاء سوف نغير الفرضيه وهكذا حتى ننتهي من الكود

post-227437-12726927211192_thumb.jpg

#9
اقتباس
واضح من المعلومات انه برنامج دردشه او كونفرس رووم حيث يوجد العديد من الكلينت وواحد سيرفل يستخدم السوكت للتراسل ويخزن معلومات معينه في قوعد معلومات معينه ويستخدم الثرد لتخاطب مع أكثر من عميل

صحيح كلامك أخي عمرلكن هذا البرنامج حالياً فقط سيرفر واحد وعميل واحد لاأكثر من ذلك التي أشرت اليها ستكون من ضمن التحسينات المدرجة لهذا البرنامج ،، المجموعة لم تطبق بالشكل السليم لهذه اللحظة ،، بمعنى انه صحيح شات صوتي مئة بالمئة ،،

#10

أرجو إرسال ملف قاعدة البيانات

#11

أخي الفاضل هل وصلت لك الرسالة أو لا أرجو الرد ،،

مواضيع مشابهة