Hallo zusammen,
ich habe hier ein Programm, dass eine asynchrone Verbindung aufbauen soll. Dazu habe ich erstmal nen Server Socket erstellt, ihn asynchron gestartet und jetzt will ich bei nem ersten Test schonmal schauen, ob es auch funktioniert. War ne gute Idee -> tut es nämlich nicht. Mein Code sieht bisher so aus:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| ... Socket _Server;
private void ServerListen() { _Server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); _Server.Bind(new IPEndPoint(IPAddress.Any, this._ServerPort)); _Server.Listen(16);
_Server.BeginAccept(new System.AsyncCallback(ServerAccept), _Server); }
private void ServerAccept(IAsyncResult ar) { byte[] rcvBuffer = new byte[Int16.MaxValue];
Socket listener = (Socket)ar.AsyncState; Socket handler = listener.EndAccept(out rcvBuffer, ar); ... |
So weit, so gut. Ich stelle also testweise eine Verbindung her, aber bei *** bricht er ab, mit der Fehlermeldung:
Zitat: |
Das IAsyncResult-Objekt wurde nicht von der entsprechenden asynchronen Methode dieser Klasse zurückgegeben.
Parametername: asyncResult |
Kurios daran ist, dass er nicht einfach sagt, welche denn die "entsprechende" Methode überhaupt ist. Ich war eigtl davon ausgegangen, dass BeginAccpet() auch zu EndAccept() gehört. Was mache ich also falsch ?
mfg
- VampireSilence