Bei OpenNetworkConnection() einen Timeout festlegen?

Für allgemeine Fragen zur Programmierung mit PureBasic.
Tibor
Beiträge: 42
Registriert: 29.08.2004 03:25
Wohnort: Mittelerde, südlich der großen Grasplantagen

Beitrag von Tibor »

Sag bitte noch mal.
Möchtest du nur prüfen ob da ein Server offen ist,
oder auch Daten versenden?

EDIT:
Vielleicht hilft dir dieser Code.

Code: Alles auswählen

Procedure IsServer(IP$,Port) ;nur echte IP-Adressen verwenden
  version=(2<<8)+1
  If WSAStartup_(version,@was.WSADATA) = 0
    s= SOCKET_(#AF_INET,#SOCK_STREAM,0);
    If s <> #INVALID_SOCKET
      addr.SOCKADDR_IN
      addr\sin_family= #AF_INET;
      addr\sin_port= htons_(Port)
      addr\sin_addr= inet_addr_(IP$)
      If connect_(s,@addr.SOCKADDR_IN,SizeOf(SOCKADDR_IN)) <> #SOCKET_ERROR
        ret= 1
      EndIf
      closesocket_(s)
    EndIf
    WSACleanup_()
  EndIf
ProcedureReturn ret
EndProcedure
Benutzeravatar
pvmichael
Beiträge: 144
Registriert: 29.08.2004 17:59
Wohnort: Rosenheim
Kontaktdaten:

Beitrag von pvmichael »

@Tibor:
Ich möchte nur sehen, ob ein Server/Dienst erreichbar ist. Mit Deinem Code versuche ich es mal.

Mir gehts halt im Endeffekt nur darum, dass der Eindruck entsteht, das Programm wäre abgestürzt, weil man ja mit dem Fenster nix machen kann, während der Verbindungsversuch stattfindet.
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag von PMV »

Also mit PureBasicbefehlen geht das wohl nicht anders, weil ja das Programm angehalten wird, bis der Timeout kommt.

Ich weis ja nicht, warum du nicht gerne mit Threads arbeitest ... so lange man weis, was man macht ists genau so, wie ohne ;)

Aber gut, du könntest auch einen Thread starten, wo nur das Fenster, bzw die Windowevents abgefragt werden ... und diesen Thread denn beenden (KillThread()) ... wenn alle Connections durch sind, aber das würde mir eher sorgen machen, da bei KillThread() in der hilfe nicht grade einem mut zugesprochen wird, das zu benutzten :lol:

Also nach meinen infos, bzw das was ich weis, was du möchtest sollte das kein problem sein :D . Aber genau weis ich ja nicht, was du alles in einen thread packen willst. Ich hatte ja schon mal ne Idee gesagt, wie du so wenig "Threadcode" wie möglich benutzten müsstest ;) ... und die Infos dann auslesen. Aber im endefekt musst du das eh selber entscheiden.

Und eine andere möglichkeit sehe ich da leider nicht. Zumindest nicht mit der PureBasic Network Lib.

Aber vielleicht kannste ja mit der API was anfangen ... wenns dir dabei wohler ist und es auch wirklich funktioniert

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Benutzeravatar
Skywalker
Beiträge: 77
Registriert: 22.09.2004 23:35

Beitrag von Skywalker »

Was ist eigentlich aus dem Thema hier geworden?
Stehe nämlich gerade vor der selben Problematik.

Gruß
Thomas
Benutzeravatar
125
Beiträge: 1322
Registriert: 19.09.2004 16:52
Wohnort: Neu Wulmstorf (Hamburg)
Kontaktdaten:

Beitrag von 125 »

Antworten