Avatar billede jens_bach Nybegynder
24. august 2006 - 01:29 Der er 6 kommentarer og
1 løsning

client server - tcp/udp netværk

Hej ...

er der en der har et godt eksampel på et klient server program.

og hvis der er en som har et på en syslog server.
Avatar billede arne_v Ekspert
24. august 2006 - 03:25 #1
jeg har et command line eksempel
Avatar billede arne_v Ekspert
24. august 2006 - 03:25 #2
Imports System
Imports System.Collections
Imports System.IO
Imports System.Net
Imports System.Net.Sockets
Imports System.Threading

Class ChatMain
    Public Shared Sub Main(ByVal args As String())
        Dim srv As Server = New Server
        srv.Run
    End Sub
End Class

Class Server
    Private allclients As ArrayList

    Public Sub Run()
        allclients = New ArrayList
        Dim server As TcpListener = New TcpListener(IPAddress.Any, 50000)
        server.Start
        While True
            Dim client As TcpClient = server.AcceptTcpClient
            Dim ch As ClientHandler = New ClientHandler(client, Me)
            allclients.Add(ch)
            Call (New Thread(AddressOf ch.Run)).Start
        End While
    End Sub

    Public Sub SendAll(ByVal msg As String)
        For Each ch As ClientHandler In allclients
            ch.Send(msg)
        Next
    End Sub

    Public Sub Remove(ByVal ch As ClientHandler)
        allclients.Remove(ch)
    End Sub
End Class

Class ClientHandler
    Private rdr As StreamReader
    Private wrt As StreamWriter
    Private srv As Server

    Public Sub New(ByVal cli As TcpClient, ByVal srv As Server)
        rdr = New StreamReader(cli.GetStream)
        wrt = New StreamWriter(cli.GetStream)
        Me.srv = srv
    End Sub

    Public Sub Run()
        While True
            Dim line As String = rdr.ReadLine
            Dim cmd As String = line.Split(" ".ToCharArray)(0)
            If cmd = "SEND" Then
                srv.SendAll(line.Substring(5))
            Else
                If cmd = "EXIT" Then
                    srv.Remove(Me)
                    Return
                End If
            End If
        End While
    End Sub

    Public Sub Send(ByVal msg As String)
        SyncLock wrt
            wrt.WriteLine(msg)
            wrt.Flush
        End SyncLock
    End Sub
End Class
Avatar billede arne_v Ekspert
24. august 2006 - 03:25 #3
Imports System
Imports System.IO
Imports System.Net.Sockets
Imports System.Threading

Class ChatClient
    Public Shared Sub Main(ByVal args As String())
        Dim client As TcpClient = New TcpClient("localhost", 50000)
        Dim wrt As StreamWriter = New StreamWriter(client.GetStream)
        Call (New Thread(AddressOf (New Reader(client)).Run)).Start
        Dim line As String
        line = Console.ReadLine
        While Not (line Is Nothing)
            wrt.WriteLine("SEND " + line)
            wrt.Flush
            line = Console.ReadLine
        End While
        wrt.WriteLine("EXIT")
        wrt.Flush
        wrt.Close
        client.Close
    End Sub
End Class

Class Reader
    Private rdr As StreamReader

    Public Sub New(ByVal cli As TcpClient)
        rdr = New StreamReader(cli.GetStream)
    End Sub

    Public Sub Run()
        Try
            Dim line As String
            line = rdr.ReadLine
            While Not (line Is Nothing)
                Console.WriteLine(line)
                line = rdr.ReadLine
            End While
        Catch e As Exception
            ' nothing
        End Try
    End Sub
End Class
Avatar billede jens_bach Nybegynder
24. august 2006 - 22:22 #4
takker. lig lige et svar ;)
Avatar billede jens_bach Nybegynder
24. august 2006 - 22:29 #5
jeg har også lige nået med syslog ;)
Avatar billede arne_v Ekspert
24. august 2006 - 22:34 #6
ud og google

jeg finder bl.a.

http://www.eggheadcafe.com/articles/20050212.asp (C# mne kan konverters til VB.NET)

http://www.kiwisyslog.com/logger-info.php
Avatar billede arne_v Ekspert
24. august 2006 - 22:37 #7
og et svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester