Tu peux le faire via postfre ou sqlite c'est toi qui décide.Tu veux dire que je n'ai pas besoin de PostGreSQL?
Dans les deux cas tu auras besoin d'un logiciel serveur et d'un logiciel client
Rien à voir, le serveur sera la parti qui à accès à la base SQL, le client sera ton logiciel actuel, sauf qu'au lieu d'accéder directement à la base SQL, il devra passer par le serveur pour ses requetesLes 2 logiciels seront ils identiques ou différents?
Ca évite d'avoir 2 PC qui font une requête en même temps, ce qui aurais pour effet de faire "kaboom" ta base SQL et d'être sécurisé.
Je t'ai fait un petit exemple, à savoir que dans ton cas, 2 client c'est pas beaucoup donc un serveur monothread fera le boulot et sera plus simple à coder, mais si tu souhaite faire le même genre
de code client/serveur, avec plusieurs connections en même temps, il faudra multithread ton serveur.
Serveur :
Code : Tout sélectionner
EnableExplicit
InitNetwork()
;UseSQLiteDatabase()
Structure client
  ID.I
  *Data
  DataReceive.i
  DataSize.i
EndStructure
Enumeration
  #PRT_bla
  #PRT_blabla
EndEnumeration
Global NewList client.client(), *networkbuffer = AllocateMemory(65536)
Declare RequestEvent(*ClientData)
If CreateNetworkServer(0,5555)
  ;Ouvre ta base SQL ici
  Repeat
    Select NetworkServerEvent(0)
      Case #PB_NetworkEvent_None
        Delay(10)
      Case #PB_NetworkEvent_Data
        ForEach client()
          If client()\ID = EventClient()
            If client()\DataSize
              client()\DataReceive + ReceiveNetworkData(client()\ID,client()\Data,client()\DataSize-client()\DataReceive)
            Else
              ReceiveNetworkData(client()\ID,*networkbuffer,SizeOf(long))
              client()\Data = AllocateMemory(PeekL(*networkbuffer))
              client()\DataSize = PeekL(*networkbuffer)
              client()\DataReceive = ReceiveNetworkData(client()\ID,client()\Data,client()\DataSize)
            EndIf
            Break
          EndIf
        Next
        If client()\DataReceive = client()\DataSize
          client()\DataReceive = 0
          client()\DataSize = 0
          RequestEvent(@client())
        EndIf
      Case #PB_NetworkEvent_Connect
        AddElement(client())
        client()\ID = EventClient()
      Case #PB_NetworkEvent_Disconnect
        ForEach client()
          If client()\ID = EventClient()
            If client()\DataSize
              FreeMemory(client()\Data)
            EndIf
            DeleteElement(client())
            Break
          EndIf
        Next
    EndSelect
    
  ForEver
  
EndIf
Procedure RequestEvent(*ClientData.client)
  Protected size
  Select PeekA(*ClientData\Data)
    Case #PRT_bla
      ;En vrais ça devrais correspontre à tes requetes
      Debug "j'ai recu un bla"
    Case #PRT_blabla
      size = SizeOf(ascii)+Len("bla bla blaaaaa")*2+2
      Debug "j'ai recu "+PeekS(*ClientData\Data+SizeOf(ascii))
      PokeL(*networkbuffer,size)
      PokeA(*networkbuffer+SizeOf(long),#PRT_blabla)
      PokeS(*networkbuffer+SizeOf(long)+SizeOf(ascii),"bla bla blaaaaa")
      SendNetworkData(*ClientData\ID,*networkbuffer,size+SizeOf(long))
      Delay(10)
  EndSelect
  FreeMemory(*ClientData\Data)
EndProcedureCode : Tout sélectionner
EnableExplicit
InitNetwork()
Enumeration
  #PRT_bla
  #PRT_blabla
EndEnumeration
Global *networkbuffer = AllocateMemory(65536), connection
connection = OpenNetworkConnection("127.0.0.1",5555)
If Not connection
  MessageRequester("connection","impossible de se connecter")
  End
EndIf
Declare SendStr()
Declare SendBla()
Declare Close()
Declare Network()
If OpenWindow(0,0,0,200,300,"bla",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
  StringGadget(0,10,10,100,20,"")
  ButtonGadget(1,10,40,80,20,"envoyer la str")
  ButtonGadget(2,110,40,80,20,"envoyer un bla")
  BindEvent(#PB_Event_CloseWindow,@Close())
  BindGadgetEvent(1,@SendStr())
  BindGadgetEvent(2,@SendBla())
EndIf
Repeat : WaitWindowEvent(10) : Network() : ForEver
Procedure Close()
  End
EndProcedure
Procedure SendBla()
  PokeL(*networkbuffer,SizeOf(ascii))
  PokeA(*networkbuffer+SizeOf(long),#PRT_bla)
  SendNetworkData(connection,*networkbuffer,SizeOf(long)+SizeOf(ascii))
EndProcedure
Procedure SendStr()
  Protected size
  size = SizeOf(ascii)+Len(GetGadgetText(0))*2+2
  PokeL(*networkbuffer,size)
  PokeA(*networkbuffer+SizeOf(long),SizeOf(ascii))
  PokeS(*networkbuffer+SizeOf(long)+SizeOf(ascii),GetGadgetText(0))
  SendNetworkData(connection,*networkbuffer,size+SizeOf(long))
  Delay(10)
EndProcedure
Procedure Network()
  Protected size, receivedsize
  If NetworkClientEvent(connection) = #PB_NetworkEvent_Data
    ReceiveNetworkData(connection,*networkbuffer,SizeOf(long))
    size = PeekL(*networkbuffer)
    Repeat
      receivedsize + ReceiveNetworkData(connection,*networkbuffer+receivedsize,size-receivedsize)
      ;!!!!!!!!!!!!!!!!!!! C'est un exemple donc je suis un flémard, mais la feinte c'est qu'ici receivenetworkdata peut renvoyer -1 si le réseau est occupé !!!
      ;Il faut gérer cet cas pour ne pas rentrer dans une boucle infinit !!!!!!!
    Until size = receivedsize
    Select PeekA(*networkbuffer)
      Case #PRT_blabla
        Debug PeekS(*networkbuffer+SizeOf(ascii))
        
    EndSelect
  EndIf
EndProcedure