Daten schneller übers Internet austauschen

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

Beitrag von Joel »

Wie kann man den einen Video im Speicherbereich *Video mit SendNetworkFile() verschicken?
Benutzeravatar
#NULL
Beiträge: 2237
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

den video einen einen virdeo ver Schicken einen mit dem vidoeoe mit SendNetworkData() das man man macht.$%&§$/(()%§
my pb stuff..
Bild..jedenfalls war das mal so.
Benutzeravatar
Laurin
Beiträge: 1639
Registriert: 23.09.2004 18:04
Wohnort: /dev/eth0

Beitrag von Laurin »

#NULL hat geschrieben:den video einen einen virdeo ver Schicken einen mit dem vidoeoe mit SendNetworkData() das man man macht.$%&§$/(()%§
:shock:

Schon am Mittag besoffen?
:lol: :lol: :lol:
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

Laurin hat geschrieben:Schon am Mittag besoffen?
:lol: :lol: :lol:
nein, #NULL bewegt sich nur auf der selben Kommunikationsebene wie Joel :-)

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
#NULL
Beiträge: 2237
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

ich bin ganz klar. aber ich hing nur ne weile bei joel's "den einen Video" in einer semantischen entschlüsselungs-schleife fest.
my pb stuff..
Bild..jedenfalls war das mal so.
Benutzeravatar
AndyX
Beiträge: 1272
Registriert: 17.12.2004 20:10
Wohnort: Niederösterreich
Kontaktdaten:

Beitrag von AndyX »

Joel hat geschrieben:Wie kann man den einen Video im Speicherbereich *Video mit SendNetworkFile() verschicken?
Speicherbereiche kann man mit SendNetworkFile() nicht verschicken, dafür brauchst du SendNetworkData(). hab ich aber auch schon geschrieben, aber du liest anscheinend die Antworten hier nicht.
Benutzeravatar
Joel
Beiträge: 851
Registriert: 21.04.2006 19:22

Beitrag von Joel »

@AndyX:

Meintest du so:?

Client:

Code: Alles auswählen

Datei.s = OpenFileRequester(Datei, "", "", 0) 
If OpenFile(0, Datei) = 0 
  Debug "Error: OpenFile!" 
  End 
EndIf 

lenFile = Lof(0) 
*buffer = AllocateMemory(lenFile) 
*pack = AllocateMemory(lenFile + 8) 
ReadData(0, *buffer, lenFile) 
lenPack = PackMemory(*buffer, *pack, lenFile, 7) 
If lenPack 
  MessageRequester("Info", "Ratio: " + StrF(lenPack/lenFile)) 
Else 
  MessageRequester("Info", "Weitere Komprimierung nicht möglich") 
EndIf 
; *pack -> Daten zu senden 
If InitNetwork() = 0
  MessageRequester("Error", "Can't initialize the network !", 0)
  End
EndIf

Port = 6832

ConnectionID = OpenNetworkConnection("joel2.dyndns.org", Port)
If ConnectionID = 1
MessageRequester("Error", "Can't load the movie...", 0)
End
EndIf 
;Name$ = OpenFileRequester("Senden", "C:\", "*.*", 0 , 0)
;If Name$
SendNetworkData(ConnectionID, *pack, 55555)

  
  
  
  
  CloseNetworkConnection(ConnectionID)
;Else
  ;MessageRequester("PureBasic - Client", "Can't find the server (Is it launched ?).", 0)
;EndIf

  
End   
 


Server:

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", "hat sich gemeldet ", 0)
  
        Case 2
          MessageRequester("PureBasic - Server", "Ein Client hat eine roh-datei gesendet ", 0)
          ;DateiName$ = SaveFileRequester("Bitte Datei zum Speichern auswählen", "C:\", "*.*", 0)

        ;DateiName$
       If *Video = AllocateMemory(3000000)
lenFile = Lof(0)
       ReceiveNetworkData(ClientID, *Video, lenFile)
CopyFile("*Video", "C:\testttttt1.avi")

            EndIf 
          ;MessageRequester("Info", "String: "+PeekS(Buffer), 0)
  End 
        Case 3
          MessageRequester("PureBasic - Server", "Ein Client hat eine Datei gesendet!", 0)
          SendNetworkString(ClientID, "Ja")

          DateiName$ = SaveFileRequester("Bitte Datei zum Speichern auswählen", "C:\", "*.*", 0)

       If DateiName$

       
       
       
       
       ReceiveNetworkFile(ClientID, DateiName$)
  EndIf 
        Case 4
          MessageRequester("PureBasic - Server", "Die verbindung wurde beendet!", 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   
Benutzeravatar
AndyX
Beiträge: 1272
Registriert: 17.12.2004 20:10
Wohnort: Niederösterreich
Kontaktdaten:

Beitrag von AndyX »

hui, die Codes müssen aber dringendst mal aufgeräumt werden...

ich würde es so machen(Code ungetestet!):

Client

Code: Alles auswählen

Datei.s = OpenFileRequester(Datei,"","",0)
If ReadFile(0,Datei) = 0
  End
EndIf

lenFile = Lof(0)
*buffer = AllocateMemory(lenFile)
*pack = AllocateMemory(lenFile + 8)
ReadData(0,*buffer,lenFile)
lenPack = PackMemory(*buffer,*pack,lenFile,7)
If lenPack
  MessageRequester("Info","Ratio: "+StrF(lenPack/lenFile))
Else
  MessageRequester("Info","Weitere Komprimierung nicht möglich")
EndIf
; *pack -> Daten zu senden
If InitNetwork() = 0
  MessageRequester("Error","Can't initialize the network!",0)
  End
EndIf

Port = 6832
ConnectionID = OpenNetworkConnection("joel2.dyndns.org",Port)
If ConnectionID = 0
  MessageRequester("Error","Can't connect to server...",0)
  End
EndIf
SendNetworkString(ConnectionID,Str(lenFile + 8))
SendNetworkString(ConnectionID,GetFilePart(Datei))
SendNetworkData(ConnectionID,*pack,lenFile + 8)
CloseNetworkConnection(ConnectionID)
Server

Code: Alles auswählen

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

Port = 6832
Buffer = AllocateMemory(1000)
*Video = AllocateMemory(3000000)
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","Ein Client hat sich gemeldet.",0) 
        Case 2
          MessageRequester("PureBasic - Server","Ein Client hat eine Roh-datei gesendet.",0)
          ReceiveNetworkData(ClientID,Buffer,1000)
          len = Val(PeekS(Buffer))
          Buffer = ReAllocateMemory(Buffer,1000)
          ReceiveNetworkData(ClientID,Buffer,1000)
          Datei.s = PeekS(Buffer)
          ReceiveNetworkData(ClientID, *Video, len)
          CreateFile(0,Datei)
          WriteData(0,*Video,3000000)
          CloseFile(0)
          EndIf
        Case 3
          MessageRequester("PureBasic - Server", "Ein Client hat eine Datei gesendet!",0)
          SendNetworkString(ClientID, "Ja")
          DateiName$ = SaveFileRequester("Bitte Datei zum Speichern auswählen", "C:\", "*.*", 0)
          If DateiName$
            ReceiveNetworkFile(ClientID, DateiName$)
          EndIf
        Case 4
          MessageRequester("PureBasic - Server", "Die verbindung wurde beendet!", 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
gleich auch mal die ganzen unpassenden Whitespace-Funktionen entfernt...
Zuletzt geändert von AndyX am 08.07.2006 18:50, insgesamt 1-mal geändert.
Benutzeravatar
Joel
Beiträge: 851
Registriert: 21.04.2006 19:22

Beitrag von Joel »

Ja und irgentwie empfängt der das auch nicht richig. Also speichert das auch nicht ab, aber besser bemomm ichs nicht hin.
Benutzeravatar
AndyX
Beiträge: 1272
Registriert: 17.12.2004 20:10
Wohnort: Niederösterreich
Kontaktdaten:

Beitrag von AndyX »

siehe oberes posting, hab was editiert...
Antworten