ExamineDirectory() übers Netzwerk
Verfasst: 07.12.2010 21:24
Hallo,
ich versuch' mich mal seit Längerem wieder mit PB und bin etwas aus der Übung. Ich möchte ein (sehr simples) Fernwartungsprogramm schreiben, eigentlich nur zur Übung. Nun häng ich schon vor einem Problem: Ich will, ähnlich wie beí einem FTP-Server Verzeichnisse auflisten, nur funktioniert das Ganze nicht so wie ich will
Das ganze sieht so aus, dass ich dem Client vom Server aus einen String schicke, und der mir dann das Verzeichnis aufgelistet zurückschicken soll:
Bin mir sowieso nicht sicher, ob das so funktionieren kann. Und vorallem, wie groß der Buffer sein muss um große Verzeichnisse übermitteln zu können. Hier sagt er mir, dass die ConnectionID bei Getlist() 0 sei.
Debug "PeekS"+PeekS(*Buffer) ist hier nur als Test drinnen.
Der Server schaut so aus:
Erstmal danke für die kommende Hilfe, hoffe ihr könnt mir weiterhelfen
ich versuch' mich mal seit Längerem wieder mit PB und bin etwas aus der Übung. Ich möchte ein (sehr simples) Fernwartungsprogramm schreiben, eigentlich nur zur Übung. Nun häng ich schon vor einem Problem: Ich will, ähnlich wie beí einem FTP-Server Verzeichnisse auflisten, nur funktioniert das Ganze nicht so wie ich will

Das ganze sieht so aus, dass ich dem Client vom Server aus einen String schicke, und der mir dann das Verzeichnis aufgelistet zurückschicken soll:
Code: Alles auswählen
Enumeration
#Directory
EndEnumeration
*TCPBuffer = AllocateMemory(1024)
Procedure GetList()
*Buffer = AllocateMemory(1024)
If ExamineDirectory(#Directory, text$, "*.*")
While NextDirectoryEntry(#Directory)
FileName$ = DirectoryEntryName(#Directory)
If DirectoryEntryType(#Directory) = #PB_DirectoryEntry_Directory
FileName$ = "[DIR] "+FileName$
EndIf
PokeS(*Buffer,FileName$)
Debug "PeekS"+PeekS(*Buffer)
SendNetworkData(ConnectionID,*Buffer,1024)
Wend
Else
MessageRequester("Error","Can't examine this directory:")
EndIf
EndProcedure
If InitNetwork() = 0
MessageRequester("Error", "Can't initialize the network !", 0)
End
EndIf
Port = 6000
ConnectionID = OpenNetworkConnection("127.0.0.1", Port)
If ConnectionID
Repeat
Select NetworkClientEvent(ConnectionID)
Case 0
Case 2
TCPBufferLength = ReceiveNetworkData(ConnectionID, *TCPBuffer, 1024)
text$ = PeekS(*TCPBuffer,TCPBufferLength)
Debug text$
GetList()
EndSelect
Until quit = 1
FreeMemory(*TCPBuffer)
EndIf
End
Debug "PeekS"+PeekS(*Buffer) ist hier nur als Test drinnen.
Der Server schaut so aus:
Code: Alles auswählen
Window()
CreateNetworkServer(0,6000)
SEvent = NetworkServerEvent()
ClientID = EventClient()
Repeat
*Buffer = AllocateMemory(5000)
SEvent = NetworkServerEvent()
ClientID = EventClient()
EventID = WaitWindowEvent()
If EventID = #PB_Event_Gadget
Select EventGadget()
Case #Button_List
;GetList()
SendNetworkString(ClientID,"list")
Case #Button_Connect
Case #Button_Download
SendNetworkString(ClientID,GetGadgetText(#String_Directory)+GetGadgetText(#Listview))
EndSelect
EndIf
Select SEvent
Case 1
AddGadgetItem(#Listview,-1,"Client verbunden")
Case 2
ReceiveNetworkData(ClientID,*Buffer,1024)
;AddGadgetItem(#Listview,-1,"Nachricht empfangen: "+PeekS(*Buffer))
Debug PeekS(*Buffer)
Case 3
ReceiveNetworkFile(ClientID,datei$)
Case 4
AddGadgetItem(#Listview,-1,"Clientverbindung verloren")
EndSelect
FreeMemory(*Buffer)
Until EventID = #PB_Event_CloseWindow
End