Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

.net mrežno programiranje

[es] :: .NET :: .net mrežno programiranje

[ Pregleda: 2050 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Black One
Čepin

Član broj: 46302
Poruke: 102
*.adsl.net.t-com.hr.

Sajt: www.medija.org


+1 Profil

icon .net mrežno programiranje02.03.2010. u 08:57 - pre 172 meseci
Pozdrav svima.

Dali bi mi netko mogao dati jednostavni primjer il link do tutoriala kako u vb.netu napravit program client, server i da funkcioniraju zajedno.

Prije sam u vb 6 radio s WinSock komandom i bio sam jako zadovoljan snjom jer vrlo jednostavno bilo raditi snjom.
Čitao sam da je dosta lakše radit u vb.net s socketima al koliko sam gledo na netu meni baš i nije lakše pa ako netko ima dobar primjerak da je sve objašnjeno kako rade socketi molio bi ga da mi pomogne.

Radio bi jedan chat program za svoju lokalnu mrežu.
 
Odgovor na temu

zika025
Student, ECCF
Sombor - Subotica

Član broj: 201105
Poruke: 40
*.dynamic.isp.telekom.rs.



Profil

icon Re: .net mrežno programiranje07.05.2010. u 11:54 - pre 170 meseci
Ako te jos zanima materijal na tu temu, imam primer jednostavne client - server aplikacije, bas za chat, pa odatle mozes da vidis kako sve funkcionise i da stvoris neku osnovu.
Sve u svemu, ako si zainteresovan, javi se, pa da ti posaljem na mejl.
 
Odgovor na temu

Black One
Čepin

Član broj: 46302
Poruke: 102
*.adsl.net.t-com.hr.

Sajt: www.medija.org


+1 Profil

icon Re: .net mrežno programiranje08.05.2010. u 08:49 - pre 170 meseci
poslana pp ;)
 
Odgovor na temu

pl4stik
Senior .NET programmer/Consultant
oDesk
NI na nebu NI na zemlji

Član broj: 173596
Poruke: 715
*.mbb.telenor.rs.

Sajt: xx-auth.com.azhar.arvixe...


+31 Profil

icon Re: .net mrežno programiranje10.05.2010. u 07:08 - pre 170 meseci
Jel' moze i za nas s jeftinijim ulaznicama
To sto nekoliko miliona ljudi tvrdi da nisi u pravu ne znaci da stvarno nisi - Frank Zappa

https://youtu.be/DLe358DPGXU
 
Odgovor na temu

zika025
Student, ECCF
Sombor - Subotica

Član broj: 201105
Poruke: 40
*.dynamic.sbb.rs.



Profil

icon Re: .net mrežno programiranje15.05.2010. u 19:13 - pre 169 meseci
Evo, nasao sam malo vremena, pa sam malo sredio kod tog programcica sto sam nasao, i napravio klasu od njega. Doduse, ovo je samo client strana. Server ce doci uskoro, kad opet nakrpim malo vremena.
Mislim da se moze skontati sta, kako i zasto radi, a mozete i kopirati klasu, pa pozivati metode.

Evo koda:

Code (vbnet):

Imports System.Net.Sockets

Public Class TcpClient

    Public Event MessageRecieved(ByVal Message As String)
    Public Event ErrorOccured(ByVal ErrorNumber As Integer, ByVal ErrorCaller As String, ByVal Reason As String)

    Dim ClientSocket As New System.Net.Sockets.TcpClient
    Dim ServerStream As NetworkStream
    Dim Receiving As Threading.Thread = New Threading.Thread(AddressOf GetMessage)

    Dim strMessage As String
    Dim blnIsConnected As Boolean = False

    Public ReadOnly Property LastMessage() As String
        Get
            Return strMessage
        End Get
    End Property
    Public ReadOnly Property IsConnected() As Boolean
        Get
            Return blnIsConnected
        End Get
    End Property

    Public Sub ConnectToServer(ByVal ServersIP As String, ByVal Port As Integer, Optional ByVal StartReceivingNow As Boolean = False)

        Try
            ClientSocket.Connect(ServersIP, Port)
            ServerStream = ClientSocket.GetStream
            If StartReceivingNow Then
                Call StartReceiving()
            End If
            blnIsConnected = True
        Catch ex As Exception
            RaiseEvent ErrorOccured(1, "Public Sub ConnectToServer", ex.Message.ToString)
        End Try

    End Sub

    Public Sub CloseConnection()

        If blnIsConnected Then
            ServerStream.Close()
            ClientSocket.Close()
            blnIsConnected = False
            If Receiving.IsAlive Then
                Receiving.Abort()
            End If
        Else
            RaiseEvent ErrorOccured(3, "Public Sub CloseConnection", "Not connected.")
        End If

    End Sub

    Public Sub StartReceiving()

        If blnIsConnected Then
            Receiving.Start()
        Else
            RaiseEvent ErrorOccured(3, "Public Sub StartReceiving", "Not connected.")
        End If

    End Sub

    Public Sub SendMessage(ByVal Message As String)

        If blnIsConnected Then
            Dim TextToSend As Byte()

            TextToSend = System.Text.Encoding.ASCII.GetBytes(Message)
            ServerStream.Write(TextToSend, 0, TextToSend.Length)
            ServerStream.Flush()
        Else
            RaiseEvent ErrorOccured(3, "Public Sub SendMessage", "Not connected.")
        End If

    End Sub

    Private Sub GetMessage()

        Do
            Try
                ServerStream = ClientSocket.GetStream

                Dim BufferSize As Integer
                Dim Buffer(10024) As Byte

                BufferSize = ClientSocket.ReceiveBufferSize
                ServerStream.Read(Buffer, 0, BufferSize)
                strMessage = System.Text.Encoding.ASCII.GetString(Buffer)

                RaiseEvent MessageRecieved(strMessage)
            Catch ex As Exception
                If blnIsConnected Then
                    RaiseEvent ErrorOccured(2, "Private Sub GetMessage", ex.Message.ToString)
                    Call CloseConnection()
                End If
            End Try
        Loop While blnIsConnected

    End Sub

End Class
 


U okviru forme bi trebali ubaciti nesto ovako...
Code (vbnet):

    Dim WithEvents Client As New TcpClient
    Dim strMessage As String

    Private Sub NewMessage(ByVal RecievedMessage As String) Handles Client.MessageRecieved

        strMessage = RecievedMessage
        If Me.InvokeRequired Then
            Me.Invoke(New MethodInvoker(AddressOf ShowMessage))
        Else
            ShowMessage()
        End If

    End Sub

    Private Sub ShowMessage()

        TextBox2.Text = TextBox2.Text + vbCrLf + strMessage

    End Sub
 


Ovo je neophodno zbog thread-a koji prima poruke.

Nadam se da ce vam biti od koristi. Ako imate nekih pitanja, primedbi, sugestija, ili ideju kako resiti ovo s thread-om i invoke, tj. kako ih ugraditi u klasu, rad sam da cujem. ;)

[Ovu poruku je menjao mmix dana 24.05.2010. u 08:59 GMT+1]
 
Odgovor na temu

Boris B.
Ljubljana

Član broj: 213615
Poruke: 286
*.zaslon-telecom.si.



+14 Profil

icon Re: .net mrežno programiranje17.05.2010. u 10:38 - pre 169 meseci
U principu to je to, samo na jednu stvar treba promeniti. Ili napravi klasu koja vraca u OnMessageRecieved vraca byte[] umesto stringa i pusti petljanje sa protokolom aplikaciji koja koristi klasu, ili napravi kolektor pomocnu klasu koja ce tek kad primi CrLf (ili neki tvoj control sequence) okinuti event OnMesageRecieved(string), zato sto ti niko ne garantuje da ce ServerStream.Read vratiti uvek tacno jedan red, a resultat Read metode ti kaze koliko je zaista bajtova uspeo da procita.


[Ovu poruku je menjao Boris B. dana 17.05.2010. u 11:51 GMT+1]
if it walks like a duck and quacks like a duck, it could be a dragon doing a duck
impersonation.
 
Odgovor na temu

zika025
Student, ECCF
Sombor - Subotica

Član broj: 201105
Poruke: 40
*.dynamic.isp.telekom.rs.



Profil

icon Re: .net mrežno programiranje24.05.2010. u 05:37 - pre 169 meseci
Evo konacno i server strane chat aplikacije.
Na zalost, nisam imao vremena da je sredim, pa postavljam kod takav kakvog sam ga nasao...

Code (vbnet):

Imports System.Net.Sockets
Imports System.Text

Module Module1

    Dim clientsList As New Hashtable

    Sub Main()

        Dim serverSocket As New TcpListener(8888)
        Dim clientSocket As TcpClient
        Dim infiniteCounter As Integer
        Dim counter As Integer

        serverSocket.Start()
        msg("Chat Server Started ....")
        counter = 0
        infiniteCounter = 0
        For infiniteCounter = 1 To 2
            infiniteCounter = 1
            counter += 1
            clientSocket = serverSocket.AcceptTcpClient()

            Dim bytesFrom(10024) As Byte
            Dim dataFromClient As String

            Dim networkStream As NetworkStream = _
            clientSocket.GetStream()
            networkStream.Read(bytesFrom, 0, CInt(clientSocket.ReceiveBufferSize))
            dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom)
            dataFromClient = _
            dataFromClient.Substring(0, dataFromClient.IndexOf("$"))

            clientsList(dataFromClient) = clientSocket

            broadcast(dataFromClient + " Joined ", dataFromClient, False)

            msg(dataFromClient + " Joined chat room ")
            Dim client As New handleClinet
            client.startClient(clientSocket, dataFromClient, clientsList)
        Next

        clientSocket.Close()
        serverSocket.Stop()
        msg("exit")
        Console.ReadLine()

    End Sub

    Sub msg(ByVal mesg As String)
        mesg.Trim()
        Console.WriteLine(" >> " + mesg)
    End Sub

    Private Sub broadcast(ByVal msg As String, ByVal uName As String, ByVal flag As Boolean)

        Dim Item As DictionaryEntry

        For Each Item In clientsList
            Dim broadcastSocket As TcpClient

            broadcastSocket = CType(Item.Value, TcpClient)

            Dim broadcastStream As NetworkStream = broadcastSocket.GetStream()
            Dim broadcastBytes As [Byte]()

            If flag = True Then
                broadcastBytes = Encoding.ASCII.GetBytes(uName + " says : " + msg)
            Else
                broadcastBytes = Encoding.ASCII.GetBytes(msg)
            End If

            broadcastStream.Write(broadcastBytes, 0, broadcastBytes.Length)
            broadcastStream.Flush()
        Next

    End Sub

    Public Class handleClinet

        Dim clientSocket As TcpClient
        Dim clNo As String
        Dim clientsList As Hashtable

        Public Sub startClient(ByVal inClientSocket As TcpClient, ByVal clineNo As String, ByVal cList As Hashtable)

            Me.clientSocket = inClientSocket
            Me.clNo = clineNo
            Me.clientsList = cList
            Dim ctThread As Threading.Thread = New Threading.Thread(AddressOf doChat)
            ctThread.Start()

        End Sub

        Private Sub doChat()

            Dim infiniteCounter As Integer
            Dim requestCount As Integer
            Dim bytesFrom(10024) As Byte
            Dim dataFromClient As String
            Dim sendBytes As [Byte]()
            Dim serverResponse As String
            Dim rCount As String

            requestCount = 0
            For infiniteCounter = 1 To 2
                infiniteCounter = 1
                Try
                    requestCount = requestCount + 1

                    Dim networkStream As NetworkStream = clientSocket.GetStream()

                    networkStream.Read(bytesFrom, 0, CInt(clientSocket.ReceiveBufferSize))
                    dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom)
                    dataFromClient = dataFromClient.Substring(0, dataFromClient.IndexOf("$"))
                    msg("From client - " + clNo + " : " + dataFromClient)
                    rCount = Convert.ToString(requestCount)

                    broadcast(dataFromClient, clNo, True)
                Catch ex As Exception
                    MsgBox(ex.ToString)
                End Try
            Next

        End Sub

    End Class

End Module
 


Pozdrav!

[Ovu poruku je menjao mmix dana 24.05.2010. u 08:52 GMT+1]
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: .net mrežno programiranje24.05.2010. u 07:51 - pre 169 meseci
Code (vbnet):
        infiniteCounter = 0
        For infiniteCounter = 1 To 2
            infiniteCounter = 1
...
        Next


Zezas se ili stvarno ne znas kako da napravis mrtvu petlju?
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

zika025
Student, ECCF
Sombor - Subotica

Član broj: 201105
Poruke: 40
*.dynamic.isp.telekom.rs.



Profil

icon Re: .net mrežno programiranje24.05.2010. u 13:31 - pre 169 meseci
Znam, ali to nije moj kod. Kako sam ga nasao, tako sam ga postavio. Hteo sam ga srediti, ali jednostavno nisam imao vremena, pa sam ga okacio takvog kakav je. ;)
 
Odgovor na temu

Black One
Čepin

Član broj: 46302
Poruke: 102
*.adsl.net.t-com.hr.

Sajt: www.medija.org


+1 Profil

icon Re: .net mrežno programiranje24.05.2010. u 14:03 - pre 169 meseci
postavim i ja za dan svoj kod što sam ga sredio al imam jedan problem korisnici se uspiju spojit na server ali kad pošalju poruku prime samo nazad svoju poruku al ne i od drugih korisnika tak isto i za ostale tko god se spoji kad uhvatim vremena objavim kod
 
Odgovor na temu

[es] :: .NET :: .net mrežno programiranje

[ Pregleda: 2050 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.