Asynchrone Sockets (BeginSend)

  • Hallo StageTwo !
    Ich bin wiedereinmal auf ein Problem gestoßen das ich schon öfters hatte.
    Deshalb brauche ich eure Hilfe.


    Hier ist der Code:
    Socket Class: Klick
    Der Aufruf: Klick


    Beim Senden bekomme ich folgende Fehlermeldung: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
    Sprich, mySocket ist gleich null.


    Kuh :>


    Nachtrag:
    Wenn ich das so deklariere:
    public static Socket mySock;


    Dann bekomme ich diese Fehlermeldung:
    Eine Anforderung zum Senden oder Empfangen von Daten wurde verhindert, da der Socket nicht verbunden ist und (beim Senden über einen Datagrammsocket mit einem sendto-Aufruf) keine Adresse angegeben wurde

  • Doch mach ich hier:

  • Poste nächstes mal gleich von Anfang an den richtigen Code. ;)


    Also du handelst da mit 2 verschiedenen Sockets.


    Zum einen mit mySocket aus der Form-Klasse & zum anderen mit mySock aus der ToServer Klasse.
    Du verbindest mySocket mit einem Server (dieses Socket ist initialisiert).
    Die Daten sendest du aber mit dem Socket aus der ToServer Klasse.


    Also du must nun zuerst mySock (ToServer.mySock.Connect(RebirthIP, RebirthPort)) verbinden (resp. das Core-Socket das in der Klasse benutzt wird initialisieren).

  • Beim connecten gibt es in der Regel ja auch keine riesen verzögerung bei der das nütztlich wäre.

    Zitat

    Dr. Gregory House: You've gotta get down here. They've got a satellite aimed directly into Cuddy's vagina. I told them that chances of invasion are slim to none but...

  • Naja ich hab keine Ahnung ob ich das jetzt richtig erkläre aber egal:


    Sagen wir du hast folgenden Code:


    [cs]
    WriteLine("PSEUDECODE :D");
    blub.Connect( xXxX );
    meineFunktion();
    [/cs]



    Naja jedenfalls läuft das jetzt ja so ab:


    Gibt die Zeile aus, dann kommt er zur Connect Methode. In die springt er jetz rein und arbeitet den Code ab, weshalb der Thread 'freezt'.
    Danach gehts eben weiter.



    Hast du das Ganze jetzt mit der asynchronen Methode BeginConnect, ruft er die Methode zwar auf, aber geht halt gleich weiter - ohne Freeze.
    ...quasi wird das halt in nem anderen Thread aufgerufen ^^.



    ( hoffe es ist richtig erklärt )
    Termi

  • Ah okay ^^ Habs verstanden.


    Edit:
    Hab das Asynchrone beibehalten und das Sleep konnte ich entfernen, da ich mit ManuelResetEvents arbeite.
    Dadurch wurde noch ein zweiter Fehler behoben mit dem ich so nicht gerechnet hatte :)


    ~Close.