Einzelnen Beitrag anzeigen

Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: EIdNotASocket - Socket OPeration on non Socket???

  Alt 18. Feb 2010, 10:42
Ein Socket ist quasi das Objekt auf Betriebssystemebene, welche die Kommunikation organisiert. Dem Socket kann man bestimmte Eigenschaften zuweisen (welcher Typ, welches Protokoll, etc.), man kann dem Socket sagen, dass es etwas absenden soll und wohin und man kann schauen, ob der Socket etwas in seinem Empfangspuffer liegen hat. usw usf.

Unter Windows sieht das folgendermaßen aus:
Delphi-Quellcode:
//stark gekürzt
uses WinSock;
var s:TSocket; // =Integer
begin
  s:=socket(Af_Inet,Sock_DGRAM,IPProto_UDP); //Socket initialisieren/einrichten


  sendto(s,buf,buflen,addr,addrsize); //Inhalt von Buf an Addr über socket s senden.
Neben sendto gibt es natürlich noch andere Befehle, wie recvfrom oder select. Bei allen musst du am Anfang ein Sockethandle (hier: s) übergeben. Wenn du das nicht machst, bekommst du eben deinen oben genannten Fehler.



Was bedeutet dies für dein Problem.
1. Du musst für die Nutzung von Indy nicht die WinAPI Befehle lernen, die ich u.a in dem Code oben gepostet habe,
2. du musst auch nicht die ScktComp dir ansehen, wenn du mit Indy arbeitest
3. Indy arbeitet intern mit genau dem, was ich dir oben angegeben habe (und natürlich auch die SocktComp). Du hast also bei der Bedienung von Indy etwas falsch gemacht. Deswegen sollst du mal zeigen, was du gemacht hast.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat