gibt es irgendwelche leicht zu verstehenden und natürlich in purebasic geschriebenen beispiele, zu einem sehr simplen client und server system, mit name und passwort eingabe?! kenn mich da leider nicht aus.
c ya,
nco2k
Code: Alles auswählen
Procedure sendftp(send$)
; Daten lokal in comdata.txt speichern
CreateFile(#df,"comdata.txt")
WriteString(send$)
CloseFile(#df)
; Die Datei comdata.txt an den Server senden
Proxy.s=""
ProxyBypass.s=""
ServerName.s="Internetseite"
UserName.s="Username"
Password.s="Password"
localfile.s="textfile.txt"; zu übertragene Datei
remotefile.s="wohin_mit_dem_text.txt"
hInternet=InternetOpen_("FTP",#INTERNET_OPEN_TYPE_DIRECT,Proxy,ProxyBypass,0)
If hInternet
hConnect=InternetConnect_(hInternet,ServerName,#FTP_PORT,UserName,Password,#INTERNET_SERVICE_FTP,0,0)
If hConnect
If FtpPutFile_(hConnect,localfile,remotefile,#FTP_TRANSFER_ASCII,0)
;MessageRequester("","File has been sent",0)
Else
MessageRequester("Error", "Failure while sending file...",0)
EndIf
Else
MessageRequester("Error", "Couldn't get a connection to the server!",0)
EndIf
InternetCloseHandle_(hInternet)
Else
MessageRequester("Error", "Internet isn't reachable.",0)
EndIf
SetGadgetText(#wg,url$+"?CMD=1")
EndProcedure
Code: Alles auswählen
Repeat
SEvent.l = NetworkServerEvent()
If SEvent
ClientID = NetworkClientID()
Select SEvent
Case 1 ;<--- jeder kann sich ohne name+passwort einloggen... geht das auch anders?!
;
Case 2
;
Case 4
;
EndSelect
Else
Delay(20)
EndIf
ForEverCode: Alles auswählen
;Initialisiern der Netzwerkfunktionen
If InitNetwork() = 0
MessageRequester("Error", "Can't initialize the network !", 0)
End
EndIf
Enumeration
#Server
EndEnumeration
Enumeration
#UsernameTXT
#UsernameInput
#Connect
EndEnumeration
Username.s
Password.s
Text.s
ClientID.l
PasswordNeeded.l = 0
Buffer = AllocateMemory(100)
Procedure Open_Server()
OpenWindow(#Server, 216, 0, 100, 20, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered , "Server")
CreateNetworkServer(4096); Öffnen des Servers
EndProcedure
Open_Server()
Repeat
Event = WindowEvent()
ServerEvent = NetworkServerEvent()
If ServerEvent = 1
ClientID = NetworkClientID() ;Speichern der UserID des neu hinzugekommenen Users
ElseIf ServerEvent = 2 ;Empfang von Rohdaten und anschliessender vergleich mit diversen Werten
length = ReceiveNetworkData(ClientID, Buffer, 100)
Text = PeekS(Buffer, length)
If PasswordNeeded = 0
OpenPreferences("Users.txt")
PreferenceGroup(Text)
Password = ReadPreferenceString("Password", "")
ClosePreferences()
SendNetworkString(ClientID, "Password")
PasswordNeeded = 1
Else
If Text = Password
SendNetworkString(ClientID, "Granted")
PasswordNeeded = 0
EndIf
If Text <> Password
SendNetworkString(ClientID, "Denied")
EndIf
EndIf
EndIf
Delay(1)
Until Event = #PB_EventCloseWindow
CloseNetworkServer()
EndCode: Alles auswählen
;- Initialisiern der Netzwerkfunktionen
If InitNetwork() = 0
MessageRequester("Error", "Can't initialize the network !", 0)
End
EndIf
Enumeration
#Client
EndEnumeration
Enumeration
#UsernameTXT
#UsernameInput
#Connect
EndEnumeration
Username.s
Password.s
Text.s
Buffer = AllocateMemory(100)
Procedure Open_Client()
If OpenWindow(#Client, 216, 0, 200, 60, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered , "Client")
If CreateGadgetList(WindowID())
TextGadget(#UsernameTXT, 10, 10, 60, 20, "Username:")
StringGadget(#UsernameInput, 70, 5, 110, 20, "")
ButtonGadget(#Connect, 10, 30, 170, 20, "Connect")
EndIf
EndIf
EndProcedure
Open_Client()
Repeat
Event = WindowEvent()
If Event = #PB_EventGadget
GadgetID = EventGadgetID()
If GadgetID = #UsernameInput
Username = GetGadgetText(#UsernameInput) ;Den Usernamen abfragen und in der entsprechenden Variable speichern
ElseIf GadgetID = #Connect
ConnectionID = OpenNetworkConnection("192.168.0.1", 4096) ; Hier wird auf den lokalen server connected. (IP je nach bedarf anpassen)
If ConnectionID = 0
MessageRequester("Error", "Can't open network connection !", 0); Falls keine Verbindung möglich ist, Fehler ausgeben
EndIf
SendNetworkString(ConnectionID, Username) ; Hier wird der Username verschickt
EndIf
EndIf
If ConnectionID <> 0
ClientEvent = NetworkClientEvent(ConnectionID)
If ClientEvent = 2 ;Falls rohdaten geschickt wurden (in unserem fall nur strings)...
length = ReceiveNetworkData(ConnectionID, Buffer, 100) ;... lesen wir diese direkt in den bereitgestellten Speicher und speichern das in der variable length...
Text = PeekS(Buffer, length) ;... und lesen diesen speicherbereich anschliessend aus (als string da wir hier nur mit strings arbeiten wie gesagt)
; Hier werden die verschiedenen möglichkeiten der Server Antworten aufgelistet und auch die folgen daraus.
If Text = "Password" ; Bei diesem Befehl werden wir dazu aufgefordert das entsprechende Passwort einzugeben
Password = InputRequester("Enter your password", "In order to get Acces to the account of" + Username + " you must enter the right password!", "Enter here")
SendPassword = 1 ; Das password wird gespeichert...
ElseIf Text = "Granted" ; Hier hat alles wunderbar geklappt
MessageRequester("Congratulations!", "Congratulations! You successfully logged in!")
ElseIf Text = "Denied" ; Hier leider nicht
MessageRequester("Error!", "The entered password is wrong!")
EndIf
EndIf
If SendPassword = 1
SendNetworkString(ConnectionID, Password) ;... und hier verschickt
SendPassword = 0
EndIf
EndIf
Delay(1)
Until Event = #PB_EventCloseWindow
EndCode: Alles auswählen
[XYZ]
Password = 123