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:
Normal ist bei @ErfinderDesRades bei der Methode "EndRead" der Abbruch.
Müsste ja so passen oder hab ich da irgendwas vergessen?
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
- Form WinForm;
- TcpClient client;
- BinaryReader reader;
- BinaryWriter writer;
- Func<string> ldgRead;
- public string IP;
- public Client(TcpClient Client, Form WinForm)
- {
- this.WinForm = WinForm;
- this.client = Client;
- IP = client.Client.RemoteEndPoint.ToString();
- NetworkStream str = Client.GetStream();
- reader = new BinaryReader(str);
- writer = new BinaryWriter(str);
- ldgRead = reader.ReadString;
- ldgRead.BeginInvoke(new AsyncCallback(EndRead), null);
- }
- public delegate void IncommingHandler(string Message, Client CL);
- public event IncommingHandler Incomming;
- protected virtual void OnIncomming(string Message, Client CL)
- {
- IncommingHandler handler = Incomming;
- if (handler != null) Incomming(Message, CL);
- }
- public delegate void DisconnectHandler(Client CL);
- public event DisconnectHandler Disconnect;
- protected virtual void OnDisconnect(Client CL)
- {
- DisconnectHandler handler = Disconnect;
- if (handler != null) Disconnect(CL);
- }
- void EndRead(IAsyncResult ar)
- {
- try
- {
- string mes = ldgRead.EndInvoke(ar);
- WinForm.Invoke(new Action(() => OnIncomming(mes, this)));
- ldgRead.BeginInvoke(new AsyncCallback(EndRead), null);
- }
- catch (EndOfStreamException e) { OnDisconnect(this); }
- }
- public void Send(string Message)
- {
- writer.Write(Message);
- }
Normal ist bei @ErfinderDesRades bei der Methode "EndRead" der Abbruch.
Müsste ja so passen oder hab ich da irgendwas vergessen?