Bei empfangenem String Computer Herunterfahren

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Joel
Beiträge: 851
Registriert: 21.04.2006 19:22

Beitrag von Joel »

Wie kann man eigentlich den Port von einem Computer herausfinden.
Weil ich weiß nicht welchen port meinen Computer gerade benutzt. :mrgreen:
kiki
Beiträge: 155
Registriert: 06.05.2006 17:54

Beitrag von kiki »

Stimmt, dass ist eine Schwirige Frage. :D :mrgreen: :D
Benutzeravatar
Joel
Beiträge: 851
Registriert: 21.04.2006 19:22

Beitrag von Joel »

Was hab ich den jetzt daran wieder Falsch gemacht?

Code: Alles auswählen

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

Port = 0705
Buffer = AllocateMemory(1000000)

If CreateNetworkServer(0, 0705 , #PB_Network_UDP)
EndIf  

;84.174.225.117

  ;MessageRequester("PureBasic - Server", "Server created (Port "+Str(Port)+").", 0)
  If OpenNetworkConnection("84.174.225.117", 0705) = 0
  MessageRequester("PureBasic - Server", "Server created (Port "+Str(Port)+").", 0)
  ;Repeat
      
    SEvent = NetworkServerEvent()
  
    If SEvent
    
      ClientID = EventClient()
  
      Select SEvent
      
        Case 1
          MessageRequester("PureBasic - Server", "A new client has connected !", 0)
  
        Case 2
          MessageRequester("PureBasic - Server", "Client "+Str(ClientID)+" has send a packet !", 0)
          ReceiveNetworkData(ClientID, Buffer, 1000)
          MessageRequester("Info", "String: "+PeekS(Buffer), 0)
  
        Case 3
          MessageRequester("PureBasic - Server", "Client "+Str(ClientID)+" has send a file via the network !", 0)
          ReceiveNetworkFile(ClientID, "C:\TEST_Network.ftp3")
  
        Case 4
          MessageRequester("PureBasic - Server", "Client "+Str(ClientID)+" has closed the connexion...", 0)
          Quit = 1
    
      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    
 ;EndIf
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Code-Tags bitte benutzen oder die Formatierung ist dann so scheiße, dass wir kein bock haben deinen Code zu überprüfen, danke.

Warum hast du überhaupt das Repeat und Until auskommentiert? Das muss doch rein, sonst ist das Programm doch gleich zuende.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

> Buffer = AllocateMemory(1000000)
Wozu brauchst du 1 MB Speicher? Du brauchst in der Regel nicht mehr
als 3-4 Kilobyte.

Außerdem, warum hast du das Repeat ausgeklammert? So bleibt der
Server nicht im Speicher, sondern beendet sich nach einem Durchlauf
sofort.
Bild
Benutzeravatar
Joel
Beiträge: 851
Registriert: 21.04.2006 19:22

Beitrag von Joel »

Ahhhhhh :lol: :mrgreen: :lol:
Jetzt weiß ich was ihr mit Code Tags meintet. Und ich habe gedacht das wäre ein Befehl. Ich hab schon in der Hilfe datei verzweifelt danach gesucht.

Der Fremde Computer muss meinen Port wissen damit ich dem Computer seine IP weiß. nur wie weiß man welchen port man hat.

Hier der Code wo ich festgestellt habe dass der Fremde Computer meinen Port wissen muss.

Code: Alles auswählen

CreateNetworkServer(0, 0705 [, Modus])


If OpenNetworkConnection("87.192.850.440", 0705, #PB_Network_TCP) = 0
  MessageRequester("PureBasic - Server", "Server created (Port "+Str(Port)+").", 0)
  End
   EndIf 
[/code]
Benutzeravatar
benpicco
Beiträge: 391
Registriert: 01.10.2004 15:32
Wohnort: im Code
Kontaktdaten:

Beitrag von benpicco »

Joel hat geschrieben: Der Fremde Computer muss meinen Port wissen damit ich dem Computer seine IP weiß. nur wie weiß man welchen port man hat.
Du hast nicht nur einen Port, du hast 65000! Such dir also einen aus :wink: Du musst halt nur schauen, das kein anderes Programm den Port schon benutzt (Schau mal in der Hilfe unter "Port-Nummern"). Außerdem wird empfohlen, Ports zwischen 6000 und 7000 zu wählen. Server und Client müssen den Port natürlich kennen, also schreibe ihn in den code oder in eine config datei
Johann Wolfgang von Geothe hat geschrieben:Wie dieses oder jenes Wort geschrieben wird, darauf kommt es doch eigentlich nicht an, sondern darauf, daß die Leser verstehen, was man damit sagen wollte.
Benutzeravatar
Joel
Beiträge: 851
Registriert: 21.04.2006 19:22

Beitrag von Joel »

Ja stimmt schon aber jetzt brauch ich noch meine IP Adresse. Man kann die ja net mit makeIPAdress()erstellen. Wie kann ich die denn dann ermitteln?

Hier nochmal der Code wo meine IP fehlt

Code: Alles auswählen

InitNetwork()
CreateNetworkServer(0, 0705 , #PB_Network_TCP) 

;Wie heißt meine IP Adrese
If OpenNetworkConnection("....", 0705, #PB_Network_TCP) = 0 
  MessageRequester("Keine verbindung", "Es kann keine verbindung hergesellt werden", 0) 
  End 
   EndIf 
Benutzeravatar
roherter
Beiträge: 1407
Registriert: 10.04.2005 18:58
Kontaktdaten:

Beitrag von roherter »

Code: Alles auswählen

InitNetwork()
ExamineIPAddresses() 
While ergebnis=0
Ergebnis = NextIPAddress()
erg$=IPString(ergebnis)
Debug erg$
Wend 
:freak:
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 »

Geht immer nochn net. ich hab die IP eingegeben aber der kann immer noch keine verbindung herstellen.

Code: Alles auswählen

InitNetwork()
CreateNetworkServer(0, 0705 , #PB_Network_TCP) 
ExamineIPAddresses() 
While ergebnis=0 
Ergebnis = NextIPAddress() 
erg$=IPString(ergebnis) 
Debug erg$ 
Wend 



;Wie heißt meine IP Adrese
If OpenNetworkConnection("192.186.2.25", 0705, #PB_Network_TCP) = 0 
  MessageRequester("Keine verbindung", "Es kann keine verbindung hergesellt werden", 0) 
  End 
   EndIf 
Antworten