Hallo zusammen
Ich habe eine Fragen bezüglich der in der .NET Klassenbibliothek vorhandenen Sockets:
Was ist der Unterschied zwischen BeginConnect und ConnectAsync? Ich habe keine Antwort in der MSDN Dokumention auf diese Frage gefunden ?!?
Ich arbeite gerade an einem Studienprojekt und muss hierfür eine Softwarekomponente schreiben, welche eine TCP/IP - Verbindung zu einem anderen Rechner herstellt. Das besondere dabei ist nun, dass es für den Benutzer transparent sein soll, ob seine Applikation nun als Client oder als Server fungiert. Ich habe mir hierfür folgendes vorgestellt:
Nachdem der Benutzer die IP des Hosts, mit welchem er sich verbinden möchte, eingetippt hat, erstelle ich auf der einen Seite einen Serversocket, der auf eingehende Verbindungen des Partners hört und versuche aber gleichzeitig, eine Verbindung mit diesem aufzubauen. Derjenige, der zuerst eine Verbindung hergestellt hat (Server oder Client-Socket) wird also verwendet und der andere wieder geschlossen.
Ist dies eine sinnvolle Vorgehensweise oder macht man dies normalerweise anders?
Lg Ishildur
Hallo nocheinmal
Mir ist noch etwas eingefallen, was mir nicht so ganz klar ist:
Was passiert eigentlich, wenn ich BeginSend aufrufen und zur gleichen Zeit versucht mir der andere Host ebenfalls etwas zu senden? Gehen die Daten dann verloren?
Lg Ishildur
Hi Ishildur
Zu 1: Ich vermute, dass die ConnectAsync-Methode die BeginConnect-Methode verwendet, weil die n bisschen weiter geht, was die Implementierung betrifft. Macht aber imho das gleiche.
Zu 2: Wenn nicht klar ist, welche Seite sich zuerst verbindet, dann müssen ja beide auf eine Verbindung warten. Also denke ich dass das eine Sinnvolle Lösung ist.
Zu 3: Soweit ich weiß, verfügt TCP über Sicherheits-Mechanismen, die sicherstellen sollen, dass Pakete auch ankommen. Kommt ein Paket nicht an, wird es imho von der Netzwerkkarte nochmal geschickt.
So, alle Angaben ohne Gewähr. Kenn mich selber nicht so gut aus, aber hat ja sonst noch niemand geantwortet. Viel Erfolg =)
Sehe ich das richtig, dass man EndConnect nur dann aufrufen sollte, wenn der Verbindungsaufbau erfolgreich was?
Eine Frage hätte ich noch:
Kann man auf demselben Socket in einem Thread Receive und parallel dazu in einem zweiten Thread Send aufrufen? Und werden diese Aktionen dann auch tatsächlich parallel ausgeführt (also nicht so, dass der thread von send in den wait zustand gesetzt wird, bis der read thread seine arbeit abgeschlossen hat)?
Mfg Samuel
Leider zu spät gesehen...
[Hinweis] Wie poste ich richtig? Punkt 2.2
Zu finden hier
Baka wa shinanakya naoranai.
Mein XING Profil.