IP Adresse herausfinden

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
roherter
Beiträge: 1407
Registriert: 10.04.2005 18:58
Kontaktdaten:

Beitrag von roherter »

Port: Port-Nummer des laufenden Servers (siehe CreateNetworkServer()).

Du solltest mehr die hilfe lesen da muss die portnummer deines servers rein :allright:

Auserdem sehe ich nirgendwo ein

Code: Alles auswählen

Ergebnis = InitNetwork()
Purebasic 5.0 32bit und 64 bit

I'm back from hell
Benutzeravatar
Joel
Beiträge: 851
Registriert: 21.04.2006 19:22

Beitrag von Joel »

Code: Alles auswählen

INITNETWORK()
Hatte ich schon ich hab aber nur den verbindungteil hierrein kopiert.
Das mit chreatenetworkserver() wusste ich nicht weil das bei dem client beispielicht war aber egal ich versuchs mal
Benutzeravatar
Joel
Beiträge: 851
Registriert: 21.04.2006 19:22

Beitrag von Joel »

Geht immernoch nicht!

Code: Alles auswählen

f InitNetwork() = 0
  MessageRequester("Error", "Can't initialize the network !", 0)
  End
EndIf



Port = 7650
CreateNetworkServer(1, Port , #PB_Network_TCP)
If OpenWindow(8, 200, 200, 400, 300, "Intel IP 1.0", #PB_Window_SystemMenu, 0)
 If CreateGadgetList(WindowID(8))
 
 
 
 ;ConnectionID=OpenNetworkConnection(Hostname(),Port,#PB_Network_TCP)
  ConnectionID=OpenNetworkConnection("Joel2.dnsalias.net",705,#PB_Network_TCP)
If ConnectionID
  ;MessageRequester("PureBasic - Client", "Client connected To server...", 0)
  ;datei$ = OpenFileRequester("wäle die datei", "", "alles|*.*|All Files|*.*", 0)
  ;If datei$
  ;ProgressBarGadget(8, 10, 10, 70, 10, 0, 80 , #PB_ProgressBar_Smooth)
  ;FileSize(datei$)
;a$ = "C:\jo.txt"
  ;SetGadgetState(8,10)
  ;Delay(99999)
  ;CopyMemory(C:\JO.txt, *bufferread, 128)

  ;SendNetworkData(ConnectionID, *bufferread, 128)
  ;SendNetworkString(ConnectionID, "An hello from a client !!! :-)")
    
  ;MessageRequester("PureBasic - Client", "A string has been sent to the server, please check it before quit...", 0)
  
  ;CloseNetworkConnection(ConnectionID)
Else
  MessageRequester("PureBasic - Client", "Can't find the server (Is it launched ?).", 0)
EndIf
  EndIf 
  EndIf 
  ;EndIf 
End   
Benutzeravatar
roherter
Beiträge: 1407
Registriert: 10.04.2005 18:58
Kontaktdaten:

Beitrag von roherter »

Code: Alles auswählen

ConnectionID=OpenNetworkConnection("Joel2.dnsalias.net",705,#PB_Network_TCP) 
ersetze mal 705 mit port

weiß nicht obs hilft kenne dein programm nicht.
Purebasic 5.0 32bit und 64 bit

I'm back from hell
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Hi,

habe letzte zeit mal in diese thema mal reingeschaut. das mit der dns ist schon ganz richtig.
alles ausprobiert habe auch noch nicht. aber erst mal ein paar grobe informationen zu dns und weiteres.

ich gehe jetzt davon aus das du ein router bei dir zu hause hast.

1. der router baut dir die internetverbindung zu deinen provider auf. von diesen erhälts du eine dynamische ip-adresse die dann im internet eindeutig ist.
2. in deinen localen netzwerk verwaltet dein router die ip-adressen automatisch über dhcp und liefert alle weiteren wichtigen einstellungen um die verbindung ins internet aufbauen zu können.
3. der router sollte immer ein ip-kreis verwenden die mit 192.168.*.* beginnt und für ein sognanntes c-net steht. die submask steht dann auf einen filter von 255.255.255.0. das bedeutet das maximal 254 rechner in c-kreis geben kann.
die ip-adressen 192.168.*.* gibt es nicht im internet um konflikte mit den localen intranet und den internet zu vermeiden.
4. firewall im router. bei der grundeinstellung eines router werden alle port´s in localen netz zum internet gesperrt. welches auch nicht dageschaltet werden sollte.
5. alle verbinden laufen über das internet mit den ip-adressen. da man nicht alles ip-adressen sich im internet merken kann wurde der dns - "domaine name service" eingerichtet. dieser ist ein oder mehrere server die alle namen, z.b. www.google.de, kennt und die zugehörige ip-adresse zurück gibt.
6. aufgabe des router. wenn du die einstellung deiner netzwerkkarte mal dir anschaust, wird du feststellen das alle einstellungen zu der ip-adresse deines routers geht. nun werden alle anfagen wie domain-name an deine router gestellt. dieser merkt sich nun woher aus den lokalen netz die anforderung kommt und leitet diese von provider übermittelten servern weiter. wenn die anwort kommt leitet der router die infomation an die gemerkte locale ip-adresse zurück. wenn dieses zulange dauern löscht der router den gemerken weg um nicht überzulaufen.
7. server-port im localen netzwerk zum internet freischalten. da die firewall ja alle port´s sperrt must du im router diesen port erst freigeben. dazu muss der router wissen welcher port das ist und welche locale ip-adresse dazu gehört. diese funktion unterstützen alle router.
8. nach dem,ich hoffe, im router alles richtig eingestellt ist kann es los geben.
- der router baut die internetverbindung auf und übermittelt dann die zugewiesende ip-adresse den dns-server.
- der client auf ein anderen rechner im internet fordert nun eine verbindung zu "Joel2.dnsalias.net" auf und der dns-server liefert die momentane dynamische ip-adresse deines routers.
- der client weis nun die ip-adresse und versucht den port darauf zu öffnen.
- der router erkennt die anforderung auf den eingestellten port, leitet die anforderung an den localen rechner weiter und merkt sich den weg.

Im groben müste das so richtig sein.

FF :wink:
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
roherter
Beiträge: 1407
Registriert: 10.04.2005 18:58
Kontaktdaten:

Beitrag von roherter »

Es geht auf jedenfall so wie mk-soft sagt.

bei Dyndns musste auf jedenfall die adresse so eingeben http://www.deinname.ath.cx z.b.
Purebasic 5.0 32bit und 64 bit

I'm back from hell
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Port´s für den eigenen Server.

Die Port´s sollten nicht unter 2000 liegen da dieser Bereich für definierte Dienste belegt sein kann.

Wenn dein Server und Client Programm im localen Netz oder auf den Localen Rechner funktioniert, so funktionert dieses auch über Internet.
Wenn es über Internet nicht geht, dann sind eventuell die Router Einstellungen nicht richtig oder auf deinen Pc läuft auch noch eine Firewall (z.B. XP-SP2 Firewall)

FF :wink:
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
Joel
Beiträge: 851
Registriert: 21.04.2006 19:22

Beitrag von Joel »

wenn ich Daten versende weiß leider der empfänger nicht, wenn er den speicher-ort auswählt, was die gesendete Datei für ein Typ ist. und dann wird zb eine pb datei als doc gespeichert!

Fage: Kann man dengesendeten Typ irgentwie ferstellen? ohne dass man ihn angeben muss?
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Erst ein Header mit Informationen Senden, dann die Daten Senden.

FF :wink:
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
Joel
Beiträge: 851
Registriert: 21.04.2006 19:22

Beitrag von Joel »

Hier nochma n Code aber irgentwie Funktioniert der nur auf dem selben Computer und nicht wenn ich Server und Client auf 2 verschiedenen Computern laufen lasse

Server:

Code: Alles auswählen

Port = 6832

If InitNetwork() = 0
  MessageBox_(Win,"Netzwerk Umgebung kann nicht vorbreitet werden!"+Chr(13)+"Ist dein Computer Internet Tauglich?","Warnung",#MB_OK | #MB_ICONERROR)
  End
EndIf



;-------------Endlosschleife, bis was passiert-----------------------

If CreateNetworkServer(1, Port , #PB_Network_TCP)




Repeat
      
    SEvent = NetworkServerEvent()
  
    If SEvent
    
      ClientID = EventClient()
  
      Select SEvent
      
      ;-------------case 1,2,3,4---------------------------------------
      
      
      
        Case 1
          MessageRequester("Server", "Ein neuer Client meldet sich!", 0)
  
  
        Case 2
         MessageRequester("Server", "Daten oder Strings wurden gesendet", 0)


       Case 3
       DateiName$ = SaveFileRequester("Bitte Datei zum Speichern auswählen", StandardFile$, Pattern$, Pattern)
       If DateiName$

       
       
       
       
       ReceiveNetworkFile(ClientID, DateiName$)
       
       EndIf 
      
       Case 4
       MessageRequester("Server", "Die verbindung zum Client wurde getrennt!", 0)
       
       
       
       
       
       

       
       
       
       
       
EndSelect
    EndIf
    
  Until Quit = 1 
  
  MessageRequester("PureBasic - Server", "Click to quit the server.", 0)
  
  CloseNetworkServer(0)
Else
  MessageRequester("Error", "Can't create the server (port in use ?).", 0)
EndIf

  
End   
Client:

Code: Alles auswählen

If InitNetwork() = 0
  MessageRequester("Error", "Can't initialize the network !", 0)
  End
EndIf



Port = 6832
CreateNetworkServer(1, Port , #PB_Network_TCP)
If OpenWindow(8, 200, 200, 400, 300, "Intel IP 1.0", #PB_Window_SystemMenu, 0)
 If CreateGadgetList(WindowID(8))
 
 ;joel2.dnsalias.net
 
 ;ConnectionID=OpenNetworkConnection(Hostname(),Port,#PB_Network_TCP)
  ConnectionID=OpenNetworkConnection("84.174.241.252", Port,#PB_Network_TCP)
If ConnectionID
  ;MessageRequester("PureBasic - Client", "Client connected To server...", 0)
  ;datei$ = OpenFileRequester("wäle die datei", "", "alles|*.*|All Files|*.*", 0)
  ;If datei$
  ;ProgressBarGadget(8, 10, 10, 70, 10, 0, 80 , #PB_ProgressBar_Smooth)
  ;FileSize(datei$)
;a$ = "C:\jo.txt"
  ;SetGadgetState(8,10)
  ;Delay(99999)
  ;CopyMemory(C:\JO.txt, *bufferread, 128)

  ;SendNetworkData(ConnectionID, *bufferread, 128)
  ;SendNetworkString(ConnectionID, "An hello from a client !!! :-)")
    
    
   DateiName$ = OpenFileRequester("Bitte Datei zum Laden auswählen", StandardFile$, Pattern$, Pattern)
  If DateiName$
 
;DateiName$ = OpenFileRequester("test", "C.\", *.*, 0 , 0) 
SendNetworkFile(ConnectionID, DateiName$)
  ;MessageRequester("PureBasic - Client", "A string has been sent to the server, please check it before quit...", 0)
  
  ;CloseNetworkConnection(ConnectionID)
Else
  MessageRequester("PureBasic - Client", "Can't find the server (Is it launched ?).", 0)
EndIf
  EndIf 
  EndIf 
  EndIf 
End   
Zuletzt geändert von Joel am 16.06.2006 15:23, insgesamt 1-mal geändert.
Antworten