Autor Beitrag
VampireSilence
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 109
Erhaltene Danke: 5


C# (VS 2008 Express), PHP/MySQL, Windows XP
BeitragVerfasst: Fr 29.04.11 20:33 
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:

ausblenden 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
dark-destination1988
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 178
Erhaltene Danke: 21



BeitragVerfasst: Mo 02.05.11 14:39 
definiere mal einen leeren IPEndPoint
und setzt bei dem Endaccept für "ar" den leeren Endpoint ein