Ok, ich habe das mal ein bisschen verbessert. Ich brauche nur jemanden, der den Client mal kompiliert und mir ne Datei schickt:-)
Ip und Port sind schon eingetragen
Server:
Code: Alles auswählen
Procedure Zusammen()
CreateFile(3,"C:\test.JPG")
Zahl= 0
For x = 1 To 999999
If ReadFile(1, "C:\1\"+Str(x)+".JPG") = 0
Goto Weiter_1:
EndIf
Zahl+1
Next
Weiter_1:
For q = 1 To Zahl
OpenFile(2,"C:\1\"+Str(q)+".JPG")
Size=FileSize("C:\1\"+Str(q)+".JPG")
For a = 1 To Size
WriteByte(3,ReadByte(2))
Next
Next
CloseFile(2)
CloseFile(3)
EndProcedure
v = 0
If InitNetwork() = 0
MessageRequester("Error", "Can't initialize the network !", 0)
End
EndIf
CreateDirectory("C:\1\")
Port = 6832
*Buffer = AllocateMemory(1000)
If CreateNetworkServer(0, Port)
;MessageRequester("PureBasic - Server", "Server created (Port "+Str(Port)+").", 0)
Repeat
Delay(10)
SEvent = NetworkServerEvent()
If SEvent
ClientID = EventClient()
Select SEvent
Case 1
;MessageRequester("PureBasic - Server", "A new client has connected !", 0)
Case 2
Datenpuffer.s = Space(4)
ReceiveNetworkData(ClientID, @Datenpuffer, 4)
;Debug "zusammen"
Zusammen()
SendNetworkString(ClientID, "endu")
Case 3
If ReadFile(7, "C:\test.JPG") <> 0
ReceiveNetworkFile(ClientID, "C:\Endungg.txt")
OpenFile(10, "C:\Endungg.txt")
EndungFile$ = ReadString(10, 0)
CopyFile("C:\test.JPG","C:\Datei."+EndungFile$)
CloseFile(10)
CloseFile(7)
DeleteFile("C:\test.JPG")
DeleteFile("C:\Endung.txt")
DeleteFile("C:\Endungg.txt")
DeleteDirectory("C:\1\", "*.*", 0)
DeleteDirectory("C:\Split\", "*.*", 0)
CloseNetworkServer(0)
End
EndIf
v+1
ReceiveNetworkFile(ClientID, "C:\1\"+Str(v)+".JPG")
SendNetworkString(ClientID, "nach")
SendNetworkString(ClientID, "weit")
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
Client:
Code: Alles auswählen
;S =
;Max.f = Wie viele Dateien
;Status = Balkenstatus
;Wert = So viel Balken werden pro Datei erhöht.
;Aktuell = Aktueller Dateiwert
;GG = Der Wert, der immer die nächste Datei Wiedergibt
;
;
;
;
Colori+1
Global S.s
Global Fertig
Global Rechnerin
Global Datei.f
Global Ente
Global ende
Global Raffi
Global Los
Global ServerID
Global ConnectionID
Global GG.f
Global S
Global S$
Global Max.f
Global Status.f
Global Wert.f
Global Akt.f
Global Hoch.f
Akt.f = 0
Raffi = 0
Rechnerin = 0
Colori = 0
Datei.f = 0
ende = 0
GG.f = 0
Procedure Splitten()
P.s="C:\Split\"
Size= FileSize(S$)
Size1 = FileSize(S$)
Byt = 600000
CreateDirectory(P)
If OpenFile(0,S$)
For x=1 To Size/Byt+1
CreateFile(1,P+Str(x)+".JPG")
For i=1 To Byt
Size1-1
If Size1 = 0
WriteByte(1,ReadByte(0))
CloseFile(1)
CloseFile(0)
Goto Weiter_1:
EndIf
WriteByte(1,ReadByte(0))
Next
CloseFile(1)
Next
CloseFile(0)
EndIf
Weiter_1:
Debug "splitt fertig"
EndProcedure
Procedure Daten()
Delay(5000)
Max.f= 0
For x = 1 To 999999
If ReadFile(1, "C:\Split\"+Str(x)+".JPG") = 0
Goto Weiter_2:
EndIf
Max.f+1
Next
Weiter_2:
Ente = 45
Debug "Daten Fertig"
EndProcedure
Procedure Main()
If InitNetwork() = 0
MessageRequester("Error", "Can't initialize the network !", 0)
End
EndIf
Port = 6832
;-Schleife zur Verbindungs-Herstellung
Repeat
ConnectionID = OpenNetworkConnection("joel2.dyndns.org", Port)
If ConnectionID
EndIf
Delay(100)
Until ConnectionID <> 0
ende = 45
Debug Splitten()
Debug Daten()
Aktuell = 0
m = 1
Debug SendNetworkFile(ConnectionID,"C:\Split\1.JPG" )
Datei.f = 1
Repeat
If Raffi = 3
; Debug "Raffi"
m+1
SendNetworkFile(ConnectionID,"C:\Split\"+Str(m)+".JPG" )
Datei.f+1
Raffi = 0
EndIf
If Max.f = Datei.f
Delay(1000)
SendNetworkString(ConnectionID, "beid")
Delay(500)
jjj = 5
EndIf
Until jjj = 5
Delay(9999999)
EndProcedure
Procedure warten()
Repeat
Delay(200)
ServerID = NetworkClientEvent(ConnectionID)
Select ServerID
Case 2
Datenpuffer.s = Space(4)
ReceiveNetworkData(ConnectionID, @Datenpuffer, 4)
If Datenpuffer = "endu"
Endung$ = GetExtensionPart(S$)
CreateFile(6, "C:\Endung.txt")
WriteString(6, Endung$, 0)
CloseFile(6)
SendNetworkFile(ConnectionID, "C:\Endung.txt")
Fertig = 45
Delay(2000)
CloseNetworkConnection(ConnectionID)
DeleteDirectory("C:\Split", "*.*", 0)
End
EndIf
If Datenpuffer = "nach"
Akt.f+1
EndIf
If Datenpuffer = "weit"
Raffi = 3
EndIf
EndSelect
Until Quit = 1
EndProcedure
Procedure Rechner()
MainThread = CreateThread(@Main(), 400)
Repeat
Delay(100)
Until ende = 45
wartenThread = CreateThread(@warten(), 500)
Repeat
Delay(10)
Until Ente = 45
Wert.f=100/Max.f
GG.f = 0
Repeat
GG.f+1
Repeat
Delay(20)
Until Akt.f = GG.f
Rechnerin = 430
Hoch.f = Akt.f*Wert.f
Delay(100)
Until Hallo = 433
EndProcedure
If OpenWindow(0, 216, 0, 399, 314, "Datei-Senden", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_MinimizeGadget)
If CreateGadgetList(WindowID(0))
StringGadget(1, 10, 32, 250, 25, "")
ButtonGadget(2, 270, 30, 110, 27, "Durchsuchen")
TextGadget(3, 10, 5, 250, 15, "Bitte die Datei auswählen, die gesendet werden soll:")
ButtonGadget(4, 130, 270, 140, 40, "Senden!!!", #PB_Button_Default | #PB_Button_Toggle)
ProgressBarGadget(5, 10, 140, 370, 50, 0, 100)
TextGadget(6, 110, 110, 160, 15, "Fortschritt des sendens der Datei:")
EndIf
Repeat
EventID = WaitWindowEvent(100)
If Rechnerin = 430
; If Rechnerin = 430
SetGadgetState(5, Hoch.f)
Rechnerin = 10
EndIf
If EventID = #PB_Event_Gadget
Select EventGadget()
Case 2
S$ = OpenFileRequester("Datei auswählen die geschickt werden soll", "C:\Downloads\Software\","*.*", 0, 0)
SetGadgetText(1, S$)
Case 4
DisableGadget(4, 1)
RechnerThread = CreateThread(@Rechner(), 400)
TextGadget(9, 0, 210, 400, 15, "Die Datei wird Verarbeitet, dannach kann man den Fortschritt des sendens verfolgen")
SetGadgetColor(9,#PB_Gadget_FrontColor, $0000FF)
EndSelect
EndIf
Until EventID = #PB_Event_CloseWindow
End
EndIf