tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
3131
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Julian Maicher Julian Maicher ist offline Mitglied Smaragd
    Registriert seit
    Jan 2004
    Ort
    Paderborn
    Beiträge
    1.210
    Hi,

    Ich mache gerade meine ersten Schritte in der Netzwerkprogrammierung um möchte ein ganz simples Chat Programm schreiben. Erstmal möchte ich nur Daten an einen Server senden.
    Damit der TCPListener immer "hört" habe ich eine Endlosschleife eingebaut. Das habe ich bereits in diversen Beispielen gesehen, doch keines davon verwendete zur Ausgabe Formulare, sondern die Console.
    Starte ich jetzt die Endlosschleife reagiert das Formular nicht mehr. Ok DoEvents habe ich mir gedacht, aber das geht auch nicht wirklich. In der Endlosschleife erfolgt nämlich eine Ausgabe in einer Listbox, die auch bei DoEvents nicht erscheint.
    Mein bisheriger Code:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    
            Dim port As Integer = 13000
            Dim localAddr As IPAddress = IPAddress.Parse("127.0.0.1")
            Dim server As New TcpListener(localAddr, port)
            server.Start()
     
            Dim bytes(10000) As Byte
            Dim data As String
     
            While True
                lstListen.Items.Add(DateTime.Now.ToString.Substring(11) & ": Warte auf Client ...")
                Dim client As TcpClient = server.AcceptTcpClient
                lstListen.Items.Add(DateTime.Now.ToString.Substring(11) & ": Client verbunden!")
                Dim stream As NetworkStream = client.GetStream
     
                data = Nothing
                Dim i As Integer
                i = stream.Read(bytes, 0, bytes.Length)
                data = System.Text.Encoding.ASCII.GetString(bytes, 0, i)
                lstListen.Items.Add(DateTime.Now.ToString.Substring(11) & ":" & data)
     
                stream.Close()
                client.Close()
            End While
    Ich möchte das ganze gerne mit TCPClient / -Listener realisieren und ohne Threads, das muss doch gehen, oder?

    Danke,

    suye
     

  2. #2
    Avatar von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.208
    Blog-Einträge
    15
    Hallo!

    Ich progge nur in C#.
    Aber ich glaube zu verstehen was Du meinst. Ich empfehle Dir das ganze asynchron zu programmieren. Ich meine damit Eventhandler die bei Datenein-/ u. ausgang ausgelöst werden.
    So würde das bei mir in C# aussehen:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    //SendeEreignisBehandlung wird initialisiert.
    AsyncCallback sendData = new AsyncCallback(OnDataSend);
    s_Socket.BeginSend(                                             
        abyBuffer, 0, abyBuffer.Length, SocketFlags.None, sendData, s_Socket);
     
    //EmpfangsEreignisBehandlung wird initialisiert.
    AsyncCallback reciveData = new AsyncCallback(OnRecivedData);
    s_Socket.BeginReceive(
        abyBuffer, 0, abyBuffer.Length, SocketFlags.None, reciveData, s_Socket);
    Ob Dir das jetzt hilft kann ich Dir jetzt logischerweise leider nicht sagen. Aber ich hoffe es hilft.

    MfG, cosmo
     
    MfG,
    Christian

    Wer sein Problem definiert, hat es schon halb gelöst!

    Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.

    The Code Project! - C# Programming | C# / VB.NET Pendants

    Regeln + Netiquette

    Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
    und vor allem nicht auf das, was euch die IHK dazu erzählt!
    Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...

  3. #3
    Triple-Axe Triple-Axe ist offline Mitglied
    Registriert seit
    Jul 2004
    Beiträge
    24
    du wirst nicht ohne Thread ( auslagern des arbeitsintensiven teils ) auskommen wenn du eine Form
    nutzen möchtest. ohne das sie "einfriert".

    ich bin Grade dabei meinen einfachen Client/Server Umzugbasteln das er in ner Form rennt.
    momentan sind Client sowie Server Konsolenanwendungen.
    wenn irgend jemand eine auch nur annähernde Idee hätte mit welcher Technik,
    in vb.net es möglich ist auf eine Verbindung bzw Datenpaket eines Clients zu lauschen ...

    bitte her damit

    ps1: warum darf threading nicht genutzt werden bei dir ?

    ps2 : asynchron = threading x(

    Wie kann man einen bilateralen MiniChat organisieren?

    grad getestet is recht nett als basis
    http://www.informtools.de/kb.aspx?id=318

    bin grad am testen wie wo wann was da passiert *G
    Geändert von Triple-Axe (30.09.10 um 10:19 Uhr) Grund: < Schreibfehler editieren
     

Ähnliche Themen

  1. [C#] TCPListener am Internet lauschen lassen?
    Von Doomt im Forum Coders Talk
    Antworten: 0
    Letzter Beitrag: 06.05.10, 18:14
  2. langsame kommunikation tcplistener
    Von Klein0r im Forum .NET Web und Kommunikation
    Antworten: 1
    Letzter Beitrag: 29.09.07, 13:46
  3. C# - TcpListener/-Client Frage ...
    Von kasal im Forum .NET Web und Kommunikation
    Antworten: 4
    Letzter Beitrag: 03.03.06, 18:12
  4. TcpListener Problem
    Von hofchr im Forum .NET Archiv
    Antworten: 10
    Letzter Beitrag: 13.10.04, 08:20
  5. ist TcpListener(Port) veraltet
    Von kleiner_mann im Forum .NET Archiv
    Antworten: 10
    Letzter Beitrag: 19.05.04, 18:05