Seite 1 von 2

Bild versenden und speichern

Verfasst: 19.02.2009 06:13
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...

Verfasst: 19.02.2009 07:25
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.

Verfasst: 19.02.2009 08:19
von Sunny
Also die Suchfunktion habe ich bereits genutzt und keine passenden Ergebnisse gefunden... :(

Was hast du denn in der Suche eingegeben???

Verfasst: 19.02.2009 09:44
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

Verfasst: 19.02.2009 15:07
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...

Verfasst: 19.02.2009 16:54
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)

Verfasst: 19.02.2009 17:46
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.

Verfasst: 19.02.2009 18:22
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.

Verfasst: 19.02.2009 22:07
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.

Verfasst: 19.02.2009 22:58
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: