Client/Server funktioniert nur über LAN

Anfängerfragen zum Programmieren mit PureBasic.
twain
Beiträge: 7
Registriert: 26.11.2010 11:04

Client/Server funktioniert nur über LAN

Beitrag von twain »

Hi,
wie der Titel schon sagt hab ich ein Client/Server Programm geschrieben, dass bis jetzt jedoch nur übers LAN funktioniert. Gibs da irgendein Trick, oder Fehler der sich einschleichen kann?
Natürlich ist der Port freigeschalten (getestet und funktioniert) und Firewall ist auch aus.

Hier mal der Code:

Client:

Code: Alles auswählen

Port = 6980

ConnectionID = OpenNetworkConnection("localhost", Port)

If ConnectionID
 ; Debug "verbunden"
  Repeat
    
 Delay(1)
*Buffer = AllocateMemory(1024)
 Select NetworkClientEvent(ConnectionID)
       
  Case 0     
       
  Case 2
      TCPBufferLength = ReceiveNetworkData(ConnectionID, *Buffer, 1024)
      text.s = PeekS(*Buffer,TCPBufferLength)
      ReceiveCheck()

  EndSelect
  
 FreeMemory(*Buffer) 
   
 Until  quit = 1
   
 EndIf   
End  
Server:

Code: Alles auswählen

  Repeat
    
    *Buffer = AllocateMemory(5000)
    SEvent = NetworkServerEvent()
    ClientID = EventClient()
    EventID = WindowEvent()
    
    If EventID = #PB_Event_Gadget
      
      Select EventGadget()
          
        Case #Button_List

          SendString()
          
        Case #Button_Download
          
          dateiname.s = GetGadgetText(#String_Directory)+GetGadgetItemText(#ListIcon,GetGadgetState(#ListIcon))
         SendNetworkString(ClientID,"/FILE/"+dateiname.s)
      EndSelect
    EndIf  
   
  Select SEvent
    Case  1
      AddGadgetItem(#ListIcon,-1,"Client verbunden")
      
    Case  2
      If ReceiveNetworkData(ClientID, *Buffer, 1024)
        
        text.s = PeekS(*Buffer)
        ReceiveCheck(text.s)
        
      Else
        AddGadgetItem(#ListIcon,-1,"Daten konnten nicht empfangen werden")
      EndIf
              
      
    Case 3 
      
      ndateiname$ = "D:\purebasic\"+Right(dateiname.s,Len(dateiname.s)-2)
      If ReceiveNetworkFile(ClientID,ndateiname$)
        Debug "Datei übertragen: "+ndateiname$
      EndIf
      
    Case 4
      AddGadgetItem(#ListIcon,-1,"Clientverbindung verloren")
        
  EndSelect
  Delay(1)
  FreeMemory(*Buffer)
  Until EventID = #PB_Event_CloseWindow
End
Wie ihr seht, nichts aufregendes, wahrscheinlich auch nicht wirklich gut gecoded aber es funktioniert bis jetzt ohne Fehler.
Mir fallt auf, dass der Client, wenn ich eine Internet-IP eintrage ewig braucht bis merkt, dass er sich nicht verbinden kann, und sich schließlich beendet. Wenn ich jedoch localhost, oder eine IP im Netzwerk eingebe, verbindet er sich in Sekundenschnelle.
Ist ja auch klar, dass er übers Internet länger braucht, aber kann es z.B. sein, dass der Client eine Zeitüberschreitung oder so bekommt, weil es ihm zu lange dauert?
Wie gesagt, am Router und der Firewall liegt es definitiv nicht, das hab ich erfolgreich getestet.

Danke schon mal für eure Antworten
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Re: Client/Server funktioniert nur über LAN

Beitrag von HeX0R »

twain hat geschrieben: Natürlich ist der Port freigeschalten (getestet und funktioniert) und Firewall ist auch aus.
Wie genau hast du das denn getestet?
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Client/Server funktioniert nur über LAN

Beitrag von STARGÅTE »

Mit sehr großer Wahrscheinlichkeit hast du einfach die Falsche IP

Oder du hast dem Router nicht gesagt, das "du" der Server sein willst.
Denn der Router selbst, dem ja die IP gehört, ist ja selbst kein PB-Server.
(ich musste bei mir zB einstellen das meine NwtzwerkIP 192.168.0.20 als StandardServer dienen soll, sodass Server fürs Internet auch funktionieren)
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
deify
Beiträge: 141
Registriert: 29.03.2010 22:01
Computerausstattung: Win7 64bit
AMD Phenom II X4 940
NVIDIA GeForce GTS 250
4GB RAM
Kontaktdaten:

Re: Client/Server funktioniert nur über LAN

Beitrag von deify »

Ich hatte auch mal das selbe problem! bei mir hat eine portweiterleitung perfekt funktioniert (:
Windows 7 | 64bit | PureBasic 4.51 (x64/x86)
twain
Beiträge: 7
Registriert: 26.11.2010 11:04

Re: Client/Server funktioniert nur über LAN

Beitrag von twain »

Naja ich habe einfach schnell einen VNC Server auf dem freigegebenen Port gestartet, und von außen mit der IP von www.wieistmeineip.de darauf zugegriffen. Funktionierte perfekt. Also müsste es meiner Meinung nach auch mit meinem Programm funktionieren
Antworten