Bild versenden und speichern

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Sunny
Beiträge: 290
Registriert: 19.02.2009 06:02

Bild versenden und speichern

Beitrag von Sunny »

Also erstmal hi @all...
also ich komme am besten mal gleich zur Sache...

Ich habe einen NetworkClient:

Code: Alles auswählen

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

Port = 6832

ConnectionID = OpenNetworkConnection("127.0.0.1", Port)
If ConnectionID
  MessageRequester("PureBasic - Client", "Client connected to server...", 0)
  
  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
  
End
und einen NetworkServer:

Code: Alles auswählen

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

Port = 6832
*Buffer = AllocateMemory(1000)

If CreateNetworkServer(0, Port)

  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
nun meine Frage:

Wie muss ich die beiden Codes umschreiben, damit der Client Bilder sendet und der Server die Bilder empfängt und in einen Ordner speichert???

(Die Codes waren Beispiele, die bei PureBasic mit enthalten waren)

Ich bedanke mich schonmal im voraus für eine Antwort...
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Beitrag von Bisonte »

Sorry wenn das so kurz ausfällt, aber das Thema ist recht umfangreich.

Die Boardsuche ist recht hilfreich und hat mir eben 14 Seiten Ergebnisse angezeigt.
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
Sunny
Beiträge: 290
Registriert: 19.02.2009 06:02

Beitrag von Sunny »

Also die Suchfunktion habe ich bereits genutzt und keine passenden Ergebnisse gefunden... :(

Was hast du denn in der Suche eingegeben???
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Beitrag von Bisonte »

Sunny hat geschrieben:Also die Suchfunktion habe ich bereits genutzt und keine passenden Ergebnisse gefunden... :(

Was hast du denn in der Suche eingegeben???
client server
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
Sunny
Beiträge: 290
Registriert: 19.02.2009 06:02

Beitrag von Sunny »

Ich hab mich jetzt durch alle 419 Suchergebnisse gekämpft aber leider nichts wirklich passendes, für mein Problem gefunden.

Ich hab auch selber noch ein wenig rumgerätselt und jetzt hat sich für mich noch eine Frage aufgeworfen.

Also...
Ich habe jetzt die beiden Codes etwas abgeändert...

Client:

Code: Alles auswählen

If InitNetwork() = 0
  MessageRequester("Error", "Netzwerk konnt nicht initialisiert werden!", 0)
  End
EndIf

Port = 6832
path$="C:\abc.jpg"

ConnectionID = OpenNetworkConnection("127.0.0.1", Port)
If ConnectionID

  
  SendNetworkFile(ConnectionID, path$)
    
 
  
  CloseNetworkConnection(ConnectionID)
Else
  MessageRequester("PureBasic - Client", "Server konnte nicht gefunden werden!", 0)
EndIf
  
End
Server:

Code: Alles auswählen

If InitNetwork() = 0
  MessageRequester("Error", "Netzwerk konnt nicht initialisiert werden!", 0)
  End
EndIf

Port = 6832
*Buffer = AllocateMemory(1000)

If CreateNetworkServer(0, Port)

  MessageRequester("PureBasic - Server", "Server erstellt (Port "+Str(Port)+").", 0)
  
  Repeat
      
    SEvent = NetworkServerEvent()
  
    If SEvent
    
      ClientID = EventClient()
  
      Select SEvent
      
        Case 1
          MessageRequester("PureBasic - Server", "Ein neuer Client ist verbunden!", 0)
  
        Case 2
          MessageRequester("PureBasic - Server", "Client "+Str(ClientID)+" hat ein Paket gesendet!", 0)
          ReceiveNetworkFile(ClientID, path$)
          MessageRequester("Info", "Sie haben eine Datei erhalten", 0)
  
        Case 3
          MessageRequester("PureBasic - Server", "Client "+Str(ClientID)+" hat eine Datei übers Netzwerk gesendet!", 0)
          ReceiveNetworkFile(ClientID, "C:\TEST_Network.ftp3")
  
        Case 4
          MessageRequester("PureBasic - Server", "Client "+Str(ClientID)+" hat die Verbindung getrennt...", 0)
          Quit = 1
    
      EndSelect
    EndIf
    
  Until Quit = 1 
  
  MessageRequester("PureBasic - Server", "Klicke auf 'OK', um die Verbindung zum Server zu beenden.", 0)
  
  CloseNetworkServer(0)
Else
  MessageRequester("Error", "Server konnte nicht erstellt werden!", 0)
EndIf

  
End   

so...
nun mein Problem:

Wenn ich jetzt den Server starte, erscheint die Nachricht:
Server erstellt (Port 6832).

so weit so gut.

Dann klicke ich auf 'OK' und starte den Client.

Danach erscheint die Nachricht:
Ein neuer Client ist verbunden!

hier is auch noch alles in Ordnung aber...
wenn ich dann wieder auf 'OK' klicke, erscheint sofort die Nachricht:
Client 14032 hat die Verbindung getrennt...

Das muss ja bedeuten, dass NetworkServerEvent() den Wert 0 zurück gibt und somit keine Daten vom Client empfangen wurden.
Das heißt ja dann, dass beim Server ab dem Code mit Case2 irgendwo ein Fehler drinn ist...(würde ich jetzt mal so behaupten)

jetzt würde ich gern wissen, was ich falsch gemacht habe, bzw. was ich vergessen habe...

schonmal danke im voraus...
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Beitrag von Bisonte »

also bei mir klappts... beide Codes in editor ... beide starten und ich hab nach den Messagerequestern ein file auf c: das genausogross ist wie das bild was ich von d: genommen hab... (und öffnen bestätigt.... es ist das bild)
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

nimm mal ff als client

Code: Alles auswählen

If InitNetwork() = 0 
  MessageRequester("Error", "Netzwerk konnt nicht initialisiert werden!", 0) 
  End 
EndIf 

Port = 6832 
path$=OpenFileRequester("Bilddatei","*.jpg","Bild|*.jpg;*.gif;*.bmp",0)
If path$
 

ConnectionID = OpenNetworkConnection("127.0.0.1", Port) 
If ConnectionID 

  
  SendNetworkFile(ConnectionID, path$) 
    
  
  
  CloseNetworkConnection(ConnectionID) 
Else 
  MessageRequester("PureBasic - Client", "Server konnte nicht gefunden werden!", 0) 
EndIf 
EndIf
  
End
da wird dann auch ein Bild ausgewählt .. eventuell gibt es c:\abc.jpg ja gar nicht

der Server empfängt das dann und speichert das in c:\test_network.ftp3 .. das könnte man auch mal passender benennen.
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
gnasen
Beiträge: 578
Registriert: 01.08.2007 14:28
Computerausstattung: PB 4.60

Beitrag von gnasen »

hab für soetwas mal eine include geschrieben:
http://www.purebasic.fr/english/viewtop ... 687#261687

ein Beispielprogramm zum versenden von Dateien ist mit dabei. Vielleicht hilft dir das ja weiter.

Falls du PB 4.3 nutzt musst du allerdings den ElseIf Block ab zeile 729
mit

Code: Alles auswählen

ElseIf _sc_getTime()-_sc_net_get_temp()\get_time > #_sc_max_wait And _sc_net_get_temp()\get_block = #False
  
  If #_sc_max_wait > 0
    _sc_get_block(_sc_net_get_temp()\get_id, _sc_net_get_temp()\get_msg_ID)
  EndIf
ersetzen, da 4.3 Probleme mit Konstanten in If Abfragen hat.
pb 4.51
Benutzeravatar
Sunny
Beiträge: 290
Registriert: 19.02.2009 06:02

Beitrag von Sunny »

Ich danke vielmals für die Antworten.

Ich werde mir die Codes gleich mal ansehen...

Sollte ich noch Fragen haben, melde ich mich nochmal.
Benutzeravatar
Sunny
Beiträge: 290
Registriert: 19.02.2009 06:02

Beitrag von Sunny »

Tut mir leid dass ich schon wieder ne Frage hab...
also erstmal die neuen Codes...

Client:

Code: Alles auswählen

If InitNetwork() = 0
  MessageRequester("Error", "Netzwerk konnt nicht initialisiert werden!", 0)
  End
EndIf

Port = 6832

versenden$ = OpenFileRequester("Bilddatei","*.jpg","Bild|*.jpg;*.gif;*.bmp",0)
If versenden$
 

ConnectionID = OpenNetworkConnection("127.0.0.1", Port)
If ConnectionID

 
  If SendNetworkFile(ConnectionID, versenden$)
  MessageRequester("PureBasic - Server", "Es wurde eine Datei versendet!", 0)
  Else
  MessageRequester("PureBasic - Server", "Es wurde leider keine Datei versendet!", 0)
  EndIf 
 
 
  CloseNetworkConnection(ConnectionID)
Else
  MessageRequester("PureBasic - Client", "Server konnte nicht gefunden werden!", 0)
EndIf
EndIf
 
End
Server:

Code: Alles auswählen

If InitNetwork() = 0
  MessageRequester("Error", "Netzwerk konnt nicht initialisiert werden!", 0)
  End
EndIf

Port = 6832
empfangen$ = "C:\Dokumente und Einstellungen\Bussi\Eigene Dateien\Dosch"

If CreateNetworkServer(0, Port)

  MessageRequester("PureBasic - Server", "Server erstellt (Port "+Str(Port)+").", 0)
 
  Repeat
     
    SEvent = NetworkServerEvent()
 
    If SEvent
   
      ClientID = EventClient()
        
        If ReceiveNetworkFile(ClientID, empfangen$)
        MessageRequester("PureBasic - Server", "Es wurde eine Datei empfangen!", 0)
        Else
        MessageRequester("PureBasic - Server", "Es wurde leider keine Datei empfangen!", 0)
        EndIf
        Quit = 1
        
    EndIf
   
  Until Quit = 1
 
  MessageRequester("PureBasic - Server", "Klicke auf 'OK', um die Verbindung zum Server zu beenden.", 0)
 
  CloseNetworkServer(0)
Else
  MessageRequester("Error", "Server konnte nicht erstellt werden!", 0)
EndIf

 
End
Also, hier hab ich mal ein wenig versucht auf Fehlersuche zu gehen...

Da habe ich mal so festgestellt, dass der Client die Datei zwar versendet aber der Server sie gar nicht empfängt...

Da sich ja zwei MessageRequester öffnen.
Auf dem, vom Client steht "Es wurde eine Datei versendet!"
aber auf dem vom Server steht "Es wurde leider keine Datei empfangen!".

Ist das nur bei mir so???
Oder habe ich jetzt irgend nen Fehler im Code???
Oder liegt es vieleicht am Port oder an der IP-Adresse (127.0.0.1)???

So langsam verzweifle ich...
:cry:
Antworten