AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

WSA* Funktionen

Ein Thema von Pseudemys Nelsoni · begonnen am 14. Jun 2004 · letzter Beitrag vom 14. Jun 2004
Antwort Antwort
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#1

WSA* Funktionen

  Alt 14. Jun 2004, 14:41
hi,

ich habe einige Fragen zu den WSA Funktionen...

Bevor man eine Verbindung aufbaut muss man ja WSAStartUp aufrufen und "irgendwann" WSACLeanUp

doch habe ich kein plan wie ich das machen soll...sagen wir mal ich habe folgendes:



Delphi-Quellcode:
var
  Test1: MyTestConnect;
  Test2: MyTestConnect;

procedure Button1click;
begin
  Test1.connect;
end;

procedure Button2click;
begin
  Test2.connect;
end;

procedure Button3click;
begin
  Test1.disconnect;
end;

procedure Button4click;
begin
  Test2.disconnect;
end;
MyTestConnect ist meine Komponente, connect/disconnect sind ihre methoden.
Connect ruft "WSAStartUp" auf, disconnect dementsprechen "WSACleanUp"....

nun ist das prob wenn ich bei einer der instanzen "disconnect"(WSACleanUp) aufrufe dann werden doch automatisch auch die Verbindungen meiner anderen instanzen beendet oder?
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: WSA* Funktionen

  Alt 14. Jun 2004, 14:47
Moin!

WSAStartup gibt dir doch eigentlich ein Handle zurück die den Socket eindeutig identifiziert. Wenn du nun dieses handle in der deiner Klasse ablegst und dann beim WSACleanUp wieder angibst, dann hat auch jede Instanz deiner Klasse ein eigenes Handle und somit wird dann auch nur die Verbindung geschlossen.

MfG
Muetze1
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#3

Re: WSA* Funktionen

  Alt 14. Jun 2004, 14:50
hallo mütze,

genau das ist ja das problem, eben nicht (denke ich) da wird kein handle angegeben, quoote aus dem MSDN:

Zitat:
Parameters
This function has no parameters.

http://msdn.microsoft.com/library/de...acleanup_2.asp


nun steh ich vor einem rätsel


btw: vielleicht habe ich mich doch falsch ausgedrückt, also WSAStartUp läd ja die ws2_32.dll in den speicher, wsacleanup tut das gegenteil, nur weiss ich nicht wo ich diese funktionen aufrufen sollte.
im initialization/finallization-teil der klasse?
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#4

Re: WSA* Funktionen

  Alt 14. Jun 2004, 14:58
Moin!

Ja, richtig. WSAStartup und WSACleanup schliessen oder öffnen auch noch keine Verbindungen und daher braucht es kein Handle. Diese beiden Funktionen initialisieren und deinitialisieren das Socket Interface von Windows - also nix grosses, aber z.B. einen Buffer anlegen, die DLLs checken, Registry zu den Protokollen befragen, etc. Diese Funktionen musst du einfach nur aufrufen vor allen anderen bzw. nach allen anderen.

Das Handle in dem Sinne musst du ja erst bei WSAConnect() etc. angeben...

MfG
Muetze1
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#5

Re: WSA* Funktionen

  Alt 14. Jun 2004, 15:04
sollte ich die beiden funktionen dann in den initialization/finallization-teil packen oder wäre es anders besser?

achja, noch eine frage dazu <g> wie vergebe ich innerhalb der klasse ein handle an z.b WSAConnect() ? ich meine jede instanz muss ja ein anderes handle haben, also müssen die namen der handles ja auch anders sein oder?

danke für deine antworten btw
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#6

Re: WSA* Funktionen

  Alt 14. Jun 2004, 15:41
Moin!

Die TClientSocket / TServerSocket machen das immer beim Create und beim Destroy (WSAStartup/WSACleanup), somit solltest du da keine Probleme haben.

Und zu der Frage mit dem Handle:

1. Du bekommst das Handle ja erst beim WSAConnect
2. Wenn du dir eine Variable in deiner Klasse definierst, dann hat jede Instanz der Klasse die du mit Create anlegst für diese Variable ihren eigenen Speicherplatz und somit hat jede Instanz in der gleichen Variablen auch ihr eigenes Handle... Also nix mit eigenem Namen...

MfG
Muetze1
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#7

Re: WSA* Funktionen

  Alt 14. Jun 2004, 15:43
vielen dank, das hilft mir weiter
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz