VersuchsChat mit leistungsfähigem Server

    • VB.NET

    Es gibt 80 Antworten in diesem Thema. Der letzte Beitrag () ist von n1nja.

      Ich hab jetzt auch mal versucht mit der Asnychronen Read-Methode zu arbeiten.
      Bis jetzt klappt auch alles.

      Aber bei mir kommt der "Verbindungsabbruch" aber nicht.
      Ich hab allerdings das ganze nach C# umgeschrieben.

      Die Client-Class sieht im Mom so aus:

      C#-Quellcode

      1. Form WinForm;
      2. TcpClient client;
      3. BinaryReader reader;
      4. BinaryWriter writer;
      5. Func<string> ldgRead;
      6. public string IP;
      7. public Client(TcpClient Client, Form WinForm)
      8. {
      9. this.WinForm = WinForm;
      10. this.client = Client;
      11. IP = client.Client.RemoteEndPoint.ToString();
      12. NetworkStream str = Client.GetStream();
      13. reader = new BinaryReader(str);
      14. writer = new BinaryWriter(str);
      15. ldgRead = reader.ReadString;
      16. ldgRead.BeginInvoke(new AsyncCallback(EndRead), null);
      17. }
      18. public delegate void IncommingHandler(string Message, Client CL);
      19. public event IncommingHandler Incomming;
      20. protected virtual void OnIncomming(string Message, Client CL)
      21. {
      22. IncommingHandler handler = Incomming;
      23. if (handler != null) Incomming(Message, CL);
      24. }
      25. public delegate void DisconnectHandler(Client CL);
      26. public event DisconnectHandler Disconnect;
      27. protected virtual void OnDisconnect(Client CL)
      28. {
      29. DisconnectHandler handler = Disconnect;
      30. if (handler != null) Disconnect(CL);
      31. }
      32. void EndRead(IAsyncResult ar)
      33. {
      34. try
      35. {
      36. string mes = ldgRead.EndInvoke(ar);
      37. WinForm.Invoke(new Action(() => OnIncomming(mes, this)));
      38. ldgRead.BeginInvoke(new AsyncCallback(EndRead), null);
      39. }
      40. catch (EndOfStreamException e) { OnDisconnect(this); }
      41. }
      42. public void Send(string Message)
      43. {
      44. writer.Write(Message);
      45. }


      Normal ist bei @ErfinderDesRades bei der Methode "EndRead" der Abbruch.

      Müsste ja so passen oder hab ich da irgendwas vergessen?