also hab hier ein client und ein server code:
server:
Code: Alles auswählen
Global crude$, clientid
Procedure dateiempfangen(param)
dateiname$=StringField(crude$, 2, Chr(29))
Size=Val(StringField(crude$, 3, Chr(29)))
If OpenWindow(0, 0, 0, 200, 10, dateiname$, #PB_Window_BorderLess)
ProgressBarGadget(0, 0, 0, 200, 10, 0, Size)
EndIf
If Size > 0
*MemBuffer = AllocateMemory(Size)
errorcounter = 0
ReceivedBytes = 0
Repeat
SetGadgetState(0, ReceivedBytes)
result = ReceiveNetworkData(clientid, *MemBuffer + ReceivedBytes, Size - ReceivedBytes)
If result = -1
Delay(1)
errorcounter + 1
Else
ReceivedBytes + result
errorcounter = 0
EndIf
Until ReceivedBytes = Size Or errorcounter > 6000 ; Abbruch nach 6 Sekunden
EndIf
If Size > 0 And ReceivedBytes = Size
If CreateFile(0, GetHomeDirectory()+dateiname$)
WriteData(0, *MemBuffer, Size)
CloseFile(0)
FreeMemory(*MemBuffer)
PrintN(dateiname$+" wurde erfolgreich empfangen.")
CloseWindow(0)
Else
PrintN(dateiname$+" konnte nicht erstellt werden.")
CloseWindow(0)
EndIf
Else
PrintN(dateiname$+" konnte nicht komplett empfangen werden.")
CloseWindow(0)
EndIf
EndProcedure
OpenConsole()
EnableGraphicalConsole(1)
ConsoleTitle("Server")
Delay(500)
Print("Netzwerk wird initialisiert... ")
If InitNetwork()<>0
ConsoleColor(14, 0)
PrintN("initialisiert!")
ConsoleColor(7, 0)
Else
ConsoleColor(12, 0)
PrintN("nicht initialisiert!")
ConsoleColor(7, 0)
Input()
End
EndIf
Print("Server wird gestartet... ")
port=6600
result=CreateNetworkServer(0, port)
If result=0
ConsoleColor(12, 0)
PrintN("Server konnte nicht gestartet werden!")
ConsoleColor(7, 0)
Input()
End
Else
ConsoleTitle("Server - Port "+Str(port)+"")
ConsoleColor(14, 0)
PrintN("gestartet! Port "+Str(port)+"")
PrintN("")
ConsoleColor(7, 0)
Repeat
Delay(20)
serverevent=NetworkServerEvent()
If serverevent=#PB_NetworkEvent_Connect
clientid=EventClient()
clientid$=Str(clientid)
clientip$=IPString(GetClientIP(clientid))
clientport$=Str(GetClientPort(clientid))
ConsoleColor(2, 0)
PrintN("Client verbunden: ID: <"+clientid$+">")
PrintN("IP: <"+clientip$+"> Port: <"+clientport$+">")
PrintN("")
ConsoleColor(7, 0)
EndIf
If serverevent=#PB_NetworkEvent_Data
clientid=EventClient()
clientid$=Str(clientid)
clientip$=IPString(GetClientIP(clientid))
buffer.s=Space(2000)
ReceiveNetworkData(clientid, @buffer, 2000)
crude$=RTrim(buffer.s)
If StringField(crude$, 1, Chr(29))="dateisenden"
CreateThread(@dateiempfangen(), 0)
EndIf
EndIf
If serverevent=#PB_NetworkEvent_Disconnect
clientid=EventClient()
clientid$=Str(clientid)
ConsoleColor(4, 0)
PrintN("Client getrennt: ID: <"+clientid$+">")
PrintN("")
ConsoleColor(7, 0)
EndIf
ForEver
EndIfclient:
Code: Alles auswählen
Global verbindung
Procedure dateisenden(param)
datei$=OpenFileRequester("", "", "Alle Dateien | *.*", 0)
FF=ReadFile(#PB_Any, datei$)
If FF
dateiname$=GetFilePart(datei$)
Size.l=Lof(FF)
*MemBuffer = AllocateMemory(Size)
ReadData(FF, *MemBuffer, Size)
SendNetworkString(verbindung, "dateisenden"+Chr(29)+dateiname$+Chr(29)+Str(Size))
sendbytes=SendNetworkData(verbindung, *MemBuffer, Lof(FF))
If sendbytes=Lof(FF)
PrintN(dateiname$+" wurde komplett gesendet.")
Else
PrintN(dateiname$+" konnte nicht komplett gesendet werden.")
EndIf
CloseFile(FF)
FreeMemory(*MemBuffer)
EndIf
EndProcedure
OpenConsole()
EnableGraphicalConsole(1)
ConsoleTitle("Client")
Delay(500)
Print("Netzwerk wird initialisiert... ")
If InitNetwork()<>0
ConsoleColor(14, 0)
PrintN("initialisiert!")
ConsoleColor(7, 0)
Else
ConsoleColor(12, 0)
PrintN("nicht initialisiert!")
ConsoleColor(7, 0)
Input()
End
EndIf
Print("Verbindung wird hergestellt... ")
host$="localhost"
port=6600
verbindung=OpenNetworkConnection(host$, port)
If verbindung=0
ConsoleColor(12, 0)
PrintN("nicht hergestellt!")
ConsoleColor(7, 0)
Input()
End
Else
ConsoleTitle("Verbindung mit <"+host$+"> Port: <"+Str(port)+">")
ConsoleColor(14, 0)
PrintN("hergestellt! Port "+Str(port)+"")
PrintN("")
ConsoleColor(7, 0)
Print(">")
Repeat
input$=Input()
If input$<>""
CreateThread(@dateisenden(), 0)
EndIf
ForEver
EndIfdanke schonmal

