tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
1386
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    cesupa cesupa ist offline Mitglied Brokat
    Registriert seit
    Sep 2004
    Beiträge
    329
    Hallo,

    ich hab heute versucht eine Winsock Anwendung zu schreiben, mit der ich aber immer nur einmal zu einem Server konatktieren kann, dann muss ich den Computer neustarten.
    Ich hab aber Null ahnung woran das liegen könnte.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    
    if((WSAStartUp($101,wsa))<>0)then
         begin
         showmessage('WSA funktioniert nicht' + inttostr(WSAGetLastError()));
         end
         else
         begin
         showmessage('WSA funktioniert');
         end;
     
      s:=winsock.socket(AF_INET,SOCK_STREAM,0);
      if(s=INVALID_SOCKET)then
      begin
      showmessage('Fehler beim Socket erstellen');
      end
      else
      begin
      showmessage('Socket erstellt');
      end;
      
      addr.sin_family:=AF_INET;
      addr.sin_port:=htons(80);
      addr.sin_addr.S_addr:=inet_addr('127.0.0.1');
     
      if((winsock.connect(s,addr,sizeof(TSockaddr)))=SOCKET_ERROR)then
      begin
          showmessage('Kein Kontakt!');
          end
          else
          begin
          showmessage('Kontakt hergestellt!');
          end;
     
          winsock.closesocket(s);
          WSACleanup();

    Das ist meine Verbindungsroutine.
    Kann aber eben nur das erste mal zu einem Server kontaktieren, um noch einmal zu einem Server zu kontakten muss ich den PC neustarten.

    Danke für eure Hilfe.

    Gruß
    cesupa
     

  2. #2
    Avatar von Gawayn
    Gawayn Gawayn ist offline Mitglied Brokat
    Registriert seit
    Dec 2003
    Beiträge
    309
    Mich würde zunächst interessieren, wieso du eine IP-Verbindung aufbauen willst. Wieso nicht TCP? Mit IP kannst du so ziemlich gar nichts anfangen, es sei denn, du willst hier dein eigenes Transmission-Protokoll proggen. Das wäre aber eher was für Profis Daher mein Vorschlag, zunächst mal ein TCP-Socket zu erstellen:
    Code :
    1
    
    s:=winsock.socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
    Der Wert 0 bedeutet -- keine Ahnung, ob du das weißt -- IPPROTO_IP.

    Ein guter Rat: Verwende mal die Konstanten, die dafür vorgesehen sind. Du trägst an manchen Stellen Zahlen ein. Das macht keinen Sinn und ist fehleranfällig. In dieser Zeile:
    Code :
    1
    
    if((WSAStartUp($101,wsa))<>0)then
    würde ich an deiner Stelle auf NO_ERROR prüfen und nicht auf 0, sonst weiß niemand, was du meinst.

    Wird denn überhaupt die Verbindung korrekt beendet, nachdem sie aufgebaut wurde?

    -Gawayn
     

Ähnliche Themen

  1. Dateiübertragung per Winsock funktioniert nicht (viel Code!)
    Von XanRaZoR im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 10.11.07, 18:29
  2. Antworten: 2
    Letzter Beitrag: 04.09.06, 14:09
  3. Animation funktioniert nur einmal
    Von PsychoCat im Forum Flash Plattform
    Antworten: 1
    Letzter Beitrag: 18.08.05, 17:14
  4. replace() funktioniert nur einmal?
    Von sam im Forum Javascript & Ajax
    Antworten: 3
    Letzter Beitrag: 14.10.04, 14:21
  5. Datenbankabfrage funktioniert nur einmal
    Von mR.fLopPy im Forum ASP
    Antworten: 1
    Letzter Beitrag: 20.05.04, 21:59