Winsock-control, kennt sich jemand aus?

Hallo
Ich habe mich gerade etwas mit dem Winsock-Steuerelement unter VB5 beschäftigt.
Es scheint ja ganz einfach zu sein, aber was ist, wenn es mehrere Steuerelemente im Code oder auf einem Form gibt?
Ich weiß zuerst einmal nicht, welche Ports verwendet werden können.
Verwende ich die „dynamische Methode“ = Port 0, dann geht es automatisch, aber ich kann nicht mehr einen bestimmten Port ansprechen.
Angenommen, ich sende einen IDcode an das Element, welches zuerst annimmt(welches nimmt zuerst an?).
Wenn dieses Control nicht annimmt, wird die Verbindung dann weitergereicht?
Oder muß ich einen bestimmten Port verwenden, um einen passenden freien Port zu ermitteln und zu übergeben?
Dann ist wieder die Frage, welchen Port kann man nehmen, und woher weiß ich, ob nicht schon ein anderes Programm diesen Port verwendet.
MfG
Falls da jemand einen Tip für mich hat…
Vielen Dank
Matthias

Hallo

Hallo

Ich habe mich gerade etwas mit dem Winsock-Steuerelement unter
VB5 beschäftigt.
Es scheint ja ganz einfach zu sein,

ist es auch *gg*

aber was ist, wenn es
mehrere Steuerelemente im Code oder auf einem Form gibt?

Du meinst mehrere Winsock Steuerlemente? Warum? Eines reicht und bei Bedarf lade sie dynamisch nach, dann kannst du ueber die index eigenschaft verifizieren welches element was ist.

Ich weiß zuerst einmal nicht, welche Ports verwendet werden
können.

Den kannst du dir aussuchen, achte aber darauf das dieser nicht schon von einer anderen Anwendung genutzt wird. Listen welche Standartmaessig benutzt sind gibt es im inet zur genuege :smile:

Verwende ich die „dynamische Methode“ = Port 0, dann geht es
automatisch, aber ich kann nicht mehr einen bestimmten Port
ansprechen.

Würde sich ja auch beissen. Aber wenn du den bestimmten port schon weisst, warum weisst du ihm den denn dann nicht gleich zu?

Angenommen, ich sende einen IDcode an das Element, welches
zuerst annimmt(welches nimmt zuerst an?).

Du musst einen Server bauen. Mit der eingabe der IP connectest du ihm. er bestaetigt dann die anfrage und baut eine verbindung mit dem anderen auf.

Wenn dieses Control nicht annimmt, wird die Verbindung dann
weitergereicht?

Sobald du die Verbindung akzeptiert hast, nimmt er automatisch die daten an. Er ruft dann das ereignis Data_arrival ( glaub) auf und da kannst du dann mit winsock1.getdata nachricht die daten abfragen.

Oder muß ich einen bestimmten Port verwenden, um einen
passenden freien Port zu ermitteln und zu übergeben?

den port gibst du am anfang an worueber er kommunizieren soll :smile:
Beim Server sowie beim Clienten!

Dann ist wieder die Frage, welchen Port kann man nehmen, und
woher weiß ich, ob nicht schon ein anderes Programm diesen
Port verwendet.

Dazu muesstest du alle ports scannen und schauen welcher frei ist. dies ist aber ein rel. grosser aufwand :frowning:

MfG
Falls da jemand einen Tip für mich hat…
Vielen Dank
Matthias

Wenn du ein Beispielcode brauchst für eine Kommunikation zwischen 2 oder mehreren rechner sag einfach bescheid :smile:
So siehst du am besten wie das alles funktioniert :smile:

MFG Alex

Danke, jetzt alles klar
Hallo
Erst mal Danke an Anno74!
Inzwischen komm ich ganz gut klar mit dem Winsock-Control.
Die Anleitung bzw. Hilfe ist hier allerdings etwas als irreführend.
Es ist u.a. ein Scanner für freie (und somit natürlich auch benutzte) Ports entstanden, das Serverprogramm wartet jetzt auf Verbindungsanforderung und kann Daten empfangen.
Das hat ganz schön lange gedauert, bis ich rausgefunden habe, das zuerst die Verbindung geschlossen werden muß, bevor die accept Methode aufgerufen wird.
Dann ist es mir außerdem gelungen, mehrere Instanzen des Controls zu erzeugen(wie in der Anleitung gefordert), um nach Akzeptieren einer Verbindungsanforderung weiterhin am Port auf weitere Anforderungen zu warten.
Bei etwa 800 bis 900 Instanzen ist Schluss, überschaubarer Speicherverbrauch. Die Datenübertragung ist allerdings nur mit drei Instanzen getestet.
Das Problem, alle Instanzen wieder zu schließen ist auch gelöst…
Zum Instanzieren habe ich das gesamte Formular mit Code neu erzeugt.
Ist das in Ordnung?
Wie wird das Winsock-Control am Besten instanziert? Habe in der Anleitung nur ein nicht funktionierendes Beispiel gefunden.
MfG
Matthias

-))