Seite 1 von 1
OpenNetworkConnection() funktioniert nur mit Compile/Run?
Verfasst: 27.01.2009 19:20
von Programie
Hi,
Ich habe seit gestern ein Problem (Bug?) mit PB.
Der Befehl
OpenNetworkConnection() funktioniert nur noch, wenn ich das Programm aus der IDE heraus kompiliere und starte. Wenn ich das fertige Executable erstelle hängt sich das Programm erst mal eine Weile an der Stelle mit
OpenNetworkConnection() auf und die Funktion gibt dann 0 zurück.
Der angegebene Server ist ja erreichbar (Sonst würde es durch kompilieren/starten auch nicht gehen).
Weiß jemand von Euch, woran das liegt?

Verfasst: 27.01.2009 19:23
von STARGÅTE
CODE Bitte, auch wenn du denkst, das es daran nicht liegen kann, weil es ja mit PB geht.
Bei mir gehen EXEn mit OpenNetworkConnection weiterhin ...
Verfasst: 27.01.2009 19:39
von Programie
Hier ist der Code:
Code: Alles auswählen
#Port=6789
#Mode=0; 1 = Server, 0 = Client
InitNetwork()
CompilerIf #Mode
If CreateNetworkServer(1,#Port)
If OpenConsole()
Repeat
Select NetworkServerEvent()
Case #PB_NetworkEvent_Connect
PrintN("Client "+IPString(GetClientIP(EventClient()))+" connected")
Case #PB_NetworkEvent_Disconnect
PrintN("Client "+IPString(GetClientIP(EventClient()))+" disconnected")
EndSelect
Delay(10)
ForEver
EndIf
EndIf
CompilerElse
ConnectionID=OpenNetworkConnection("localhost",#Port)
If ConnectionID
MessageRequester("Client","Connected to server",#MB_ICONINFORMATION)
CloseNetworkConnection(ConnectionID)
Else
MessageRequester("Client","Connection failed!",#MB_ICONERROR)
EndIf
CompilerEndIf
Server kompilieren und starten bzw. Executable erstellen und starten.
Dann Client kompilieren und starten (geht bei mir) bzw. Executable erstellen und starten (geht bei mir nicht).
Verfasst: 27.01.2009 20:45
von Bisonte
Ich habe genau das gleiche Problem gehabt und mir ist dann aufgefallen, dass wenn ich die IP auflöse es dann auch in der exe funktioniert.
Damit meine ich das "localhost" z.B. wird zu "127.0.0.1"
es gibt da auch eine kleine Prozedur ... ich glaub von Purearea hab ich die...
Ein InitNetwork wird vorrausgesetzt
Code: Alles auswählen
Procedure.s Net_GetIPbyName(NameIP.s)
Protected TheIPAddress.s
pHostinfo = gethostbyname_(NameIP)
If pHostinfo = 0
TheIPAddress = "Unable to resolve domain name"
Else
CopyMemory (pHostinfo, hostinfo.HOSTENT, SizeOf(HOSTENT))
If hostinfo\h_addrtype <> #AF_INET
TheIPAddress = "A non-IP address was returned."
Else
While PeekL(hostinfo\h_addr_list+AdressNumber*4)
ipAddress = PeekL(hostinfo\h_addr_list+AdressNumber*4)
TheIPAddress = StrU(PeekB(ipAddress),0)+"."+StrU(PeekB(ipAddress+1),0)+"."+StrU(PeekB(ipAddress+2),0)+"."+StrU(PeekB(ipAddress+3),0)
AdressNumber+1
Wend
EndIf
EndIf
ProcedureReturn TheIPAddress
EndProcedure
und seitdem klappts...
Verfasst: 28.01.2009 00:10
von Programie
Hab es jetzt mal mit "127.0.0.1" statt "localhost" probiert. Aber funktioniert immer noch nicht.
An was kann das noch liegen?
Ich teste es jetzt mal auf einem anderen Computer (Windows Server 2003 in VMware).
//EDIT: Ok, in der VM geht es.

Liegt warscheinlich an Vista oder dem sch*** Comodo Internet Security. Am Wochenende kommt wieder Kaspersky Internet Security drauf.
