[VB6] Winsock

Julexander

Lieutenant
Registriert
Juli 2004
Beiträge
568
Woran koennte das liegen, das ich mit dem Winsock Control, mich nicht vom Client zum Server ueber das Internet verbinden kann? (Muss entweder Netzwerk IP oder Localhost nehmen!)

Habs mit meinem Chat getestet (vllt liegts ja an ihm? :D)

Hab den Chat auch mal im Anhang, falls es wirklich an ihm liegen koennte...
Ist nen ziemlicher Batzen Code, und hab fuer ihn 4 Tage gebraucht damits halbwegs funzte ^^
 

Anhänge

Hmm,

ist jetzt vieleicht ne blöde Frage, aber hast du schon mal an die Firewall gedacht?
Den Port 1290 den du verwendest sollte freigegeben sein. und natürlich sollte auch das Winsock Objekt freigegeben sein ;-)

Ansonsten sehe ich jetzt zumindest auf die schnelle keinen Grund, warum es nicht funktionieren sollte...
 
In der Firewall (Zonealarm Server und Client freigegeben) genauso Port 1290 im Router.. Trotzdem wird weiterhin die "Connection forcefully rejected!" :(
 
Vielleicht bindet der Server sich nur an die lokale IP und nicht an die Internet IP (bei bestimmten Programm kann man ja aussuchen --> Interface: 192.168.0.1 oder die Internet IP).


Hab aber keine Ahnung wie man das lösen würde.


meinen chat hab ich mit dem hier programmiert.

mfg
 
Bump, kann mir denn keiner helfen? :(
Hier is schonmal die neueste Version, vllt hilft der "Connection Status" oder cmdStatus bei der Fehlersuche :( ...
 

Anhänge

Hab noch ein paar Funktionen hinzugefuegt...

Jetz sieht man (soll man) den SocketIndex, Nick, SocketState und den Port dazu
Hier hab ich was gesehen und zwar, der Port ist zufaellig (aendert sich bei jedem verbinden), also zB jetz 2551 un spaeter 2552 und so... :freak:
Das koennte vllt auch der Grund sein, wieso ich nich uebers Internet connected kann, sondern nur Netzwerk?!

2. Wenn ich mich als Client verbinde, erfolgreich einlogge und so kann ich auch schreibe und und empfangen... Connected nun ein 2. Client dazu, kann ich nix mehr empfangen, aber schreiben.. Es hat den Anschein, dass immer nur der letzte verbundene Client empfangen kann :freak:
2.1 Das kann man auch daran sehen, da ich eine Ping-Userliste angefertigt hab, die alle 2 Sekunden an alle Sockets "Png"-Anfragen sendet, und falls der Server die wiederbekommt, wird der User dieser Liste hinzugefuegt..
Wie gesagt, es ist aber immer nur der zu letzt verbundene in der Liste?!


Ich bin mit meinem Latein (bzw VB6) am Ende :freak::freak::freak:
 

Anhänge

Hallo Julexander,

ich habe aktuell kein VB6 installiert, daher habe ich nur mal in die frm Dateien reingeschaut.
Das sich bei jedem connect der Port ändert ist normal und Absicht. Prüfe doch mal den logischen Aufbau deines Programms.

Es sollte einen Socket geben der als Server fungiert auf den sich die Clients connecten.

Empfängt dieser Serversocket eine Verbindung wird auf dessen Grundlage ein neuer Socket accepted, über den dann die Client Verbindung läuft. Damit mehrere Client gleichzeitig arbeiten können, musst Du dir alle Sockets merken. Wenn imme rnur eine Verbindung geht, wird entweder der vorige Socket geschlossen oder du verwaltest ihn nicht mehr und zeigst die empfangenen Daten nicht mehr an.

Die Verwendung eines Timers ist auch nicht so glücklich. Eigentlich sollte der Serversocket alle Zustandsänderungen melden, so das ein Timer nicht notwendig ist.

MfG

Arnd
 
Naja, als ich angefangen habe, hat alles auck funktioniert wie es sollte :D
Hab halt noch Login und Registrationsfunktionen und sowas geadddet, und ja, jetz hab ich das ^^
Ich habe woanders erfahren, dass es an den Ports liegen kann, dass diese viel zu klein sind die zu benutzen fuer Internet :freak:
Habs also mit Port 27015 probiert, funzte auch nicht, hab aber so ne Entdeckung gemacht, dass die Clientports auf ca 1100 waren :freak:
Lol ich versteh des ned..
 
Es gibt einen Port auf den Du als Client connectest und einen (neuen) Port auf dem Du als Server acceptest. Diese sind unterschiedlich.

D.h. wenn dein Server auf Port 1290 läuft connectest Du auf den Port 1290. Da dabei aber ein neuer Socket angelegt wird, läuft dieser auf einem neuen Port z.B. 2201. Über diesen neuen Port läuft dann die Kommunikation.

Versuch doch mal an deinem Router einen Bereich von Ports freizugeben, die von den Clients üblicherweise benutzt werden. Da gibt es sicher ein Schema.

MfG

Arnd
 
Zuletzt bearbeitet:
Zurück
Oben