Seite 1 von 1

Client/Server funktioniert nur über LAN

Verfasst: 05.01.2011 20:28
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

Re: Client/Server funktioniert nur über LAN

Verfasst: 05.01.2011 21:43
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?

Re: Client/Server funktioniert nur über LAN

Verfasst: 05.01.2011 22:18
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)

Re: Client/Server funktioniert nur über LAN

Verfasst: 05.01.2011 22:40
von deify
Ich hatte auch mal das selbe problem! bei mir hat eine portweiterleitung perfekt funktioniert (:

Re: Client/Server funktioniert nur über LAN

Verfasst: 06.01.2011 00:11
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