Ok, mein Programm ist soweit fertig. Ich weiß jedoch noch nicht ob es funktioniert, weil ich es nur auf meinem eigenen PC ausprobiert habe.
Ich Poste den Client und den Server hier einfach mal und hoffe ihr vielleicht Zeit habt das zu testen (also Client und Server auf 2 verschiedenen PCs, am besten nicht in einem Netzwerk) Danke Schonmal im Voraus.
Wenn ihr noch etwas findet, das an meinem Programm verbessert werden sollte oder was noch hinzugefügt werden sollte etc. dann dürft ihr das hier auch sehr gerne Posten.
Manche Brechnungen und anderes habe ich sehr Kompliziert gemacht, wenn ihr eine Möglichkeit kennt wie man das kurzer schreiben könnte, dann bitte auch hier Posten
Vielen Dank im Voraus,
Hier der 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 = 6705
*Buffer = AllocateMemory(1000)
If CreateNetworkServer(0, Port)
;MessageRequester("PureBasic - Server", "Server created (Port "+Str(Port)+").", 0)
Repeat
Delay(20)
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)
If Datenpuffer = "zusa"
Zusammen()
SendNetworkString(ClientID, "endu")
EndIf
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, "näch")
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
Und hier der Client: (bei OpenNetworkConnection() bitte das richtige eintragen)
Code: Alles auswählen
Colori+1
Global S.s
Global Fertig
Global Rechnerin
Global Ente
Global ende
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
Rechnerin = 0
Colori = 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:
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
EndProcedure
Procedure Main()
If InitNetwork() = 0
MessageRequester("Error", "Can't initialize the network !", 0)
End
EndIf
Port = 6705
;-Schleife zur Verbindungs-Herstellung
Repeat
ConnectionID = OpenNetworkConnection("127.0.0.1", Port)
If ConnectionID
EndIf
Delay(100)
Until ConnectionID <> 0
ende = 45
Splitten()
Daten()
Aktuell = 0
For m = 1 To Max.f
SendNetworkFile(ConnectionID,"C:\Split\"+Str(m)+".JPG" )
Los = 55
Next
SendNetworkString(ConnectionID, "zusa")
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(1000)
CloseNetworkConnection(ConnectionID)
End
EndIf
If Datenpuffer = "näch"
Akt.f+1
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 )
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 lol = 4
EndIf