Est-ce faisable ? si oui qu'elles sont les étapes.
Merci!
Finalement j'ai plus de demandes des bureaux d'études pour des versions réseaux.
Yves

Réseau local d'entreprise ? c'est à dire qui ne passe pas par le web ?Finalement j'ai plus de demandes des bureaux d'études pour des versions réseaux.
C'est donc une application tout à fait classique que chacun installe sur son poste de travail.YvesRossignol a écrit :Sur les réseaux locaux de leur entreprise. Ils vont sur internet chercher la version voulue mais elle est executer en local sur leur serveur.Yves
Code : Tout sélectionner
UsePostgreSQLDatabase()
Enumeration
#Database
EndEnumeration
Global ReqSql.s, Buffer.s
;Connection à la base de données PostgreSQL
If OpenDatabase(#Database, "host=postgresql1.alwaysdata.com port=5432 dbname=falsam_bd01", "falsam_01", "purebasicdemo", #PB_Database_PostgreSQL)
Debug "Connected to PostgreSQL"
;Execution d'une requête de sélection
ReqSql="select * from jeux order by annee asc"
DatabaseQuery(#Database, ReqSql)
;Affichage du résultat
If DatabaseQuery(#Database, ReqSql)
While NextDatabaseRow(#Database)
Buffer = GetDatabaseString(#Database, 1) ; Titre du jeu
Buffer + " (" + GetDatabaseString(#Database, 2) ; Editeur
Buffer + " - " + GetDatabaseLong(#Database, 3) + ")" ;Année
Debug Buffer
Wend
EndIf
;Fermeture de la base de données
CloseDatabase(#Database)
Else
Debug "Connection failed: "+DatabaseError()
EndIf
Code : Tout sélectionner
EnableExplicit
Global Title.s = "Licence Server"
;Network Setup
Global Port = 6833
Global ClientID
Global BufferSize = 1024, *Buffer = AllocateMemory(BufferSize), Buffer.s
;Licence
Global MaxLicence = 3
Global CountLicence = MaxLicence
;Map des utilisateurs connectés
;Pour chaque utilisateur, une autorisation d'utilisation est attribuée (#True) ou pas (#False)
Global NewMap Users()
Declare Start()
Declare ClearLog()
Declare Resize()
Declare Exit()
Start()
Procedure Start()
Protected ServerEvent, Result
If InitNetwork() = 0
MessageRequester("Information", "Impossible d'initialiser l'environement réseau", 0)
Exit()
EndIf
;Création du serveur
If CreateNetworkServer(0, Port)
OpenWindow(0, 0, 0, 800, 600, Title, #PB_Window_SystemMenu | #PB_Window_SizeGadget)
WindowBounds(0, 200, 100, #PB_Ignore, #PB_Ignore)
EditorGadget(0, 0, 0, 800, 560, #PB_Editor_ReadOnly)
AddGadgetItem(0, -1, FormatDate("%hh:%mm", Date()) + " | Server en écoute sur le port " + Port)
CheckBoxGadget(1, 10, 570, 200, 22, "Show Log")
SetGadgetState(1, #PB_Checkbox_Checked)
ButtonGadget(2, 700, 570, 80, 22, "Clear Log")
;Déclencheur / Trigger
BindGadgetEvent(2, @ClearLog())
BindEvent(#PB_Event_SizeWindow, @Resize())
BindEvent(#PB_Event_CloseWindow, @Exit())
Repeat
Repeat : Until WindowEvent() = 0
ServerEvent = NetworkServerEvent()
If ServerEvent
ClientID = EventClient()
Select ServerEvent
Case #PB_NetworkEvent_Connect
AddGadgetItem(0, -1, FormatDate("%hh:%mm", Date()) + " | Client " + Str(ClientID) + " se connecte")
Case #PB_NetworkEvent_Data
AddGadgetItem(0, -1, FormatDate("%hh:%mm", Date()) + " | Réception des données du client " + Str(ClientID) )
ReceiveNetworkData(ClientID, *Buffer, BufferSize)
Select LCase(PeekS(*Buffer, -1, #PB_UTF8))
Case "getlicence"
If CountLicence > 0
CountLicence - 1
Users(Str(ClientID)) = #True ;Une autorisation d'utilisation est délivrée
AddGadgetItem(0, -1, FormatDate("%hh:%mm", Date()) + " | Le client " + Str(ClientID) + " reçoit une licence.")
SendNetworkString(ClientID, "ReceiveLicence", #PB_UTF8)
AddGadgetItem(0, -1, FormatDate("%hh:%mm", Date()) + " | Nombre de licence disponible " + Str(CountLicence))
Else
Users(Str(ClientID)) = #False ;Pas d'authorisation d'utilisation
AddGadgetItem(0, -1, FormatDate("%hh:%mm", Date()) + " | Plus de licence disponible pour le client " + Str(ClientID))
SendNetworkString(ClientID, "NoLicence", #PB_UTF8)
EndIf
EndSelect
Case #PB_NetworkEvent_Disconnect
AddGadgetItem(0, -1, FormatDate("%hh:%mm", Date()) + " | Le client " + Str(ClientID) + " se déconnecte")
If CountLicence < MaxLicence And Users(Str(ClientID)) = #True
CountLicence + 1
EndIf
;Suppression de l'utilisateur
DeleteMapElement(Users(), Str(ClientID))
AddGadgetItem(0, -1, FormatDate("%hh:%mm", Date()) + " | Nombre de licence disponible " + Str(CountLicence))
EndSelect
Else
Delay(10) ; Ne pas saturer le CPU
EndIf
ForEver
CloseNetworkServer(0)
Else
MessageRequester("Information", "Impossible de créer le serveur de licence" + #CRLF$ + "le port est peut être utilisé ?", 0)
EndIf
EndProcedure
Procedure ClearLog()
ClearGadgetItems(0)
EndProcedure
Procedure Resize()
Protected Width = WindowWidth(0)
Protected Height = WindowHeight(0)
ResizeGadget(0, #PB_Ignore, #PB_Ignore, Width, Height-40)
ResizeGadget(1, #PB_Ignore, Height - 30, #PB_Ignore, #PB_Ignore)
ResizeGadget(2, Width - 100, Height - 30, #PB_Ignore, #PB_Ignore)
EndProcedure
;Sortie / Exit
Procedure Exit()
CloseNetworkServer(0)
End
EndProcedure
Code : Tout sélectionner
EnableExplicit
Global Title.s = "Mon Application"
Global IP.s = "109.13.115.206", Port = 6833, TimeOut = 3000, ConnectionID
Global Result
Global BufferSize = 1024
;Plan de l'application
Declare Start()
Declare DataReceived()
Declare Exit()
Start()
Procedure Start()
;Initialisation environnement réseau
If InitNetwork() = 0
MessageRequester("Information", "Impossible d'initialiser l'environnement réseau", 0)
Exit()
EndIf
;Connection serveur
ConnectionID = OpenNetworkConnection(IP, Port, #PB_Network_TCP, TimeOut)
If ConnectionID
OpenWindow(0, 0, 0, 800, 600, Title, #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
SetWindowTitle(0, Title + " Client connected to server...")
;Triggers
BindEvent(#PB_Event_CloseWindow, @Exit())
;Demande de licence
SetWindowTitle(0, Title + " Demande de licence en cours...")
SendNetworkString(ConnectionID, "GetLicence", #PB_UTF8)
Repeat : WaitWindowEvent(5)
If ConnectionID
Result = NetworkClientEvent(ConnectionID)
Select Result
Case #PB_NetworkEvent_Data
DataReceived()
Case #PB_NetworkEvent_Disconnect
MessageRequester("Information ", "Oops désolé" + #CRLF$ + "le serveur de licence n'est plus en ligne.")
Exit()
EndSelect
EndIf
ForEver
Else
MessageRequester("Information ", "Le serveur de licences n'est pas disponible" + #CRLF$ + "Est il connecté ?")
EndIf
EndProcedure
Procedure DataReceived()
Protected *Buffer = AllocateMemory(BufferSize)
ReceiveNetworkData(ConnectionID, *Buffer, BufferSize)
Select LCase(PeekS(*Buffer, -1, #PB_UTF8))
Case "receivelicence"
SetWindowTitle(0, Title + " (Licence autorisée)")
Case "nolicence"
MessageRequester("Information", "Pas assez de licence pour utiliser cette application")
Exit()
EndSelect
FreeMemory(*Buffer)
EndProcedure
Procedure Exit()
If ConnectionID
CloseNetworkConnection(ConnectionID)
EndIf
End
EndProcedure
Pourquoi chez un hébergeur ?Je vais regarder pour mettre cela sur mon hébergeur... combien cela va-t-il-me coûter, je ne sait pas.
Ooops ! Encore une erreur de noob.je vois qu'en essayant le lien sur le serveur à la quatrième essai il nous refuse accès mais si on redemande accès il nous la donne... même si on a dépassé le nombre de licence maximum