PureBasic

Forums PureBasic
Nous sommes le Ven 23/Aoû/2019 12:52

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 11 messages ] 
Auteur Message
 Sujet du message: Les pros du réseau
MessagePosté: Jeu 01/Aoû/2019 9:45 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 29/Juil/2004 16:33
Messages: 2788
Localisation: Klyntar
Bonjour a tous,

Voilà cette nuit, une question m'a trotté dans la tête. (Même si la nuit sert a dormir)

J'avais codé il y a longtemps un petit Tchat en Purebasic.(envoi de texte)
Ce dernier fonctionner bien. Le seul hic, c'est que j'ai créer 2 exe. Un serveur, et un client. (Normal me direz vous)

Le client distant entrée l'IP ou était lancer l'exe serveur et avec le bon port ouvert, la connexion s'effectuer a merveille.

Ma réel question est :
Comment font les "soft pro" pour que le serveur s'exécute a distance.

Prennons l'exemple de MSN (pour les vieux du forum et resté dans le thème) :lol:
J'imagine que nous avons tous des clients qui se connecte a un serveur ? Mais pourtant il est impossible de lancer un exe sur un serveur ? Question de sécurité.
Si quelqu'un a la réponse à ma question. Ou un bon tuto qui explique le fonctionnement ? Car en Purebasic il est facile de créer un serveur/client mais via 2 exe. :? Ou faut t'il laisser un pc constamment allumé avec l'exe serveur dessus ?

Et je ne parle pas des jeux vidéo. (Genre pong, tic tac toe...) Ou là c'est une autre histoire.

Même si c'est plus cette partie là qui m'intéresse. Un simple Tchat c'est facile on envoie du texte en FTP et ça peut le faire. Mais des choix dans un jeu comment ça se gere ?

D'avance merci.






@++

_________________
Windows 10 x64, PureBasic 5.71 Beta 1 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz


Dernière édition par venom le Jeu 01/Aoû/2019 15:56, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Les pros du réseau
MessagePosté: Jeu 01/Aoû/2019 13:41 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 29/Juil/2004 16:33
Messages: 2788
Localisation: Klyntar
Voici 2 petits codes pas trop optimisé, réécrit pour l'occasion. ça permet d'envoyer du texte entre un serveur et un client :
Bien-sur, pour que la connexion s'effectue a distance, vous devez cote serveur ouvrir votre port TCP. Dans l'exemple, il s'agit du port 6842

Pour ceux qui souhaitent tester en local, mettez comme adresse ip cote client 127.0.0.1 :wink:

Coté serveur
Code:
;- Window Constants
Enumeration
  #Window_0
EndEnumeration

;- gadgets Constants
Enumeration
  #Server
  #Editor_0
  #String_0
  #Button_0
EndEnumeration


pseudo$ = InputRequester("pseudo", "choisissez un pseudo", "Serveur")


If InitNetwork() = 0
  MessageRequester("Erreur", "Impossible d'initialiser le réseau !", 0)
  End
EndIf

Port = 6842 ; <--- port a ouvrir sur votre routeur en TCP
*Buffer = AllocateMemory(1000)

If CreateNetworkServer(#Server, Port) = 0
MessageRequester("Erreur", "Impossible de crée le serveur !", 0)
  End
EndIf
MessageRequester("Serveur", "Serveur créé ( Port : "+Str(Port)+" TCP )", 0)




 
  If OpenWindow(#Window_0, 0, 0, 330, 280, "Serveur", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
   EditorGadget(#Editor_0, 10, 10, 310, 230, #PB_Editor_ReadOnly)
   StringGadget(#String_0, 10, 250, 220, 20, "")
   ButtonGadget(#Button_0, 240, 250, 80, 20, "Envoyer")
  EndIf

  Repeat
   SEvent = NetworkServerEvent()
    If SEvent
     ClientID = EventClient()
      Select SEvent
     
        Case #PB_NetworkEvent_Connect ; verifie si un client se connecte
         AddGadgetItem(#Editor_0, -1, "un client c'est connecter !!!", 0, 0)
 
        Case #PB_NetworkEvent_Data ; verifie si un client envoie un message
         length = ReceiveNetworkData(ClientID, *Buffer, 1000)
          AddGadgetItem(#Editor_0, -1, PeekS(*Buffer, length, #PB_UTF8), 0, 0)
 
        Case #PB_NetworkEvent_Disconnect ; verifie si un client se déconnecte
         AddGadgetItem(#Editor_0, -1, "un client c'est déconnecter !!!", 0, 0)

      EndSelect
    EndIf

   
   
   EventID = WaitWindowEvent()
    If EventID = #PB_Event_Gadget
      Select EventGadget()
         
        Case #Button_0 ; on appuie sur le button envoyer
         SendNetworkString(ClientID, pseudo$+" : "+GetGadgetText(#String_0), #PB_UTF8) ; on envoie le message au client
          AddGadgetItem(#Editor_0, -1, pseudo$+" : "+GetGadgetText(#String_0), 0, 0) ; on affiche le message dans l'editor
         SetGadgetText(#String_0, "") ; on vide le string

      EndSelect
    EndIf
  Until EventID = #PB_Event_CloseWindow
CloseNetworkServer(#Server)


Coté client
Code:
;- Window Constants
Enumeration
  #Window_0
EndEnumeration

;- gadgets Constants
Enumeration
  #Server
  #Editor_0
  #String_0
  #Button_0
EndEnumeration


pseudo$ = InputRequester("pseudo", "choisissez un pseudo", "Client")


If InitNetwork() = 0
  MessageRequester("Erreur", "Impossible d'initialiser le réseau !", 0)
  End
EndIf


IP$ = InputRequester("Information", "Entrez l'adresse IP du serveur :", "",0)
Port = 6842 ; <--- port a ouvrir sur votre routeur en TCP
*Buffer = AllocateMemory(1000)


ConnectionID = OpenNetworkConnection(IP$, Port)
If ConnectionID = 0
MessageRequester("Erreur", "Impossible de se connecter au serveur !", 0)
  End
EndIf





  If OpenWindow(#Window_0, 0, 0, 330, 280, "Client", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
   EditorGadget(#Editor_0, 10, 10, 310, 230, #PB_Editor_ReadOnly)
   StringGadget(#String_0, 10, 250, 220, 20, "")
   ButtonGadget(#Button_0, 240, 250, 80, 20, "Envoyer")
   
   AddGadgetItem(#Editor_0, -1, "connexion avec le serveur réussi !!!", 0, 0)
  EndIf

  Repeat
   SEvent = NetworkClientEvent(ConnectionID)
    If SEvent
     Select SEvent

      Case #PB_NetworkEvent_Data ; verifie si le serveur envoie un message
       length = ReceiveNetworkData(ConnectionID , *Buffer, 1000)
        AddGadgetItem(#Editor_0, -1, PeekS(*Buffer, length, #PB_UTF8), 0, 0)

      Case #PB_NetworkEvent_Disconnect ; verifie si le serveur se deconnecte
       AddGadgetItem(#Editor_0, -1, "le serveur c'est déconnecter !!!", 0, 0)
        CloseNetworkConnection(ConnectionID)

     EndSelect
    EndIf
   
   
   
   EventID = WaitWindowEvent()
    If EventID = #PB_Event_Gadget
      Select EventGadget()
         
        Case #Button_0 ; on appuie sur le button envoyer
         SendNetworkString(ConnectionID, pseudo$+" : "+GetGadgetText(#String_0), #PB_UTF8) ; on envoie le message au serveur
          AddGadgetItem(#Editor_0, -1, pseudo$+" : "+GetGadgetText(#String_0), 0, 0) ; on affiche le message dans l'editor
         SetGadgetText(#String_0, "") ; on vide le string

      EndSelect
    EndIf
  Until EventID = #PB_Event_CloseWindow
CloseNetworkConnection(ConnectionID)







@++

_________________
Windows 10 x64, PureBasic 5.71 Beta 1 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz


Dernière édition par venom le Ven 02/Aoû/2019 11:40, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Les pros du réseau
MessagePosté: Ven 02/Aoû/2019 6:26 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 27/Oct/2006 12:19
Messages: 1224
Localisation: Calvados (14)
Salut Venom,

tu as répondu toi-même à ta question : le serveur et son logiciel "serveur" tourne en permanence.

MSN, les BBS (pour les très vieux du forum :lol: ), iRC etc... tous fonctionnent de la même manière, il faut un serveur pour établir les liaisons entre les clients.

Falsam hébergeait son tchat sur un serveur "web", il pourrait mieux t'en parler que moi.

Je ne vais sans doute pas t'apprendre qu'aujourd'hui, un serveur physique (= une machine) héberge x serveurs virtuels (Hyper-V, VmWare, ...) Tu peux faire la même chose avec un PC pas trop vieux et VirtualBox : ton PC te sert de serveur multimédia par exemple, et tu fais tourner VirtualBox dessus pour ton tchat uniquement, les 2 sont cloisonnés donc pas d'interactions malencontreuse de l'un sur l'autre, si ce n'est la panne physique qui coupe TOUT :x

Voilà

_________________
Image

Image


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Les pros du réseau
MessagePosté: Ven 02/Aoû/2019 8:55 
Hors ligne
Avatar de l’utilisateur

Inscription: Mar 31/Mai/2016 9:06
Messages: 2053
oui, j'ai perso une copie de mon site sur mon NC10 (en attendant d'avoir un NAS)
si je veux que les gens aillent sur mon site qui est sur mon NC10 (pour virer un jour totalement Free.fr)
et bien il faut que mon NC10 tourne en permanence 24/24 7/7 !!

comme un NAS ;) (NAs qui est un petit ordinateur sans clavier sans ecran, qui tourne 24h/24 ....et qui ne consome quasi rien quelques Watt .... :)


a savoir que ton serveur a la maison depends de ta connection

par exemple pour mon ADSL j'ai entre 6 et 8 mega/s en Download , et 0.750 mega/s en upload ...

lorsque les gens se connectaient a la maison sur mon NC10 , ils recuperaient donc les pages a 0.750 ..... (si je ne me sert pas moi meme de ma connection )
ce qui est plus rapide qu'un BBS ou un RTC , mais moins rapide que chez Free :)

l'ideal pour un serveur a la maison, c'est d'avoir la fibre (la vraie fibre ;) (chez orange) )

la fibre SFR :
Citation:
SFR peut présenter des abonnements "fibre" alors qu'il utilise juste le réseau cablé de numéricable qui donne un débit nettement inférieur à la fibre optique.



Les abonnés ont bien une box fibre mais pas la fibre au bout de la box.



lire ici : https://www.latribune.fr/technos-medias ... 59781.html


ps: certain ordinateur (carte mere) propose une option de "Wake up" ce qui permet a la carte mere de démarrer
sur requete du reseau ... mais le temps de démarrage peut etre super long ... a moins d'un besoin spécifique
c'est pas terrible ! ...
le démarrage se configure dans le Bios de la carte mere, ensuite ça doit etre automatique

_________________
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Les pros du réseau
MessagePosté: Ven 02/Aoû/2019 9:26 
Hors ligne

Inscription: Sam 08/Fév/2014 15:19
Messages: 1592
Citation:
Mais pourtant il est impossible de lancer un exe sur un serveur
Si, mais pas depuis l’extérieur du réseau local sur lequel se trouve le serveur.

Citation:
laisser un pc constamment allumé avec l'exe serveur dessus
Oui, c'est le principe des applications client/serveur. À noter qu'un même serveur peut "discuter" avec plusieurs clients, grâce aux sockets. C'est le même principe qu'en radio: un canal d'appel et un canal de dégagement, sauf que c'est le système d'exploitation qui gère. Le client appelle toujours sur le même port, appelé port d'écoute de l'application serveur.

Citation:
Un simple Tchat c'est facile on envoie du texte en FTP et ça peut le faire
Non, FTP c'est pour transférer des fichiers, pas des phrases.

Citation:
SFR peut présenter des abonnements "fibre" alors qu'il utilise juste le réseau cablé de numéricable qui donne un débit nettement inférieur à la fibre optique.
Cet article à 3 ans 1/2. SFR est passé en fibre presque partout (dans les grandes villes). Différence entre SFR et Orange et Free, c'est que pour SFR, la liaison rue/maison ou colonne montante/appartement reste en cuivre (ce qui pour les quelques mètres qui reste ne change pas grand chose). Voir FFTH, FFTB pour les détails techniques.

:wink:

_________________
Windows 10 Famille x64 + Linux (Slackware, Debian sur Oracle VirtualBox 6.0)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Les pros du réseau
MessagePosté: Ven 02/Aoû/2019 9:35 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 29/Juil/2004 16:33
Messages: 2788
Localisation: Klyntar
Ah ok,

Merci des réponses (que je connaissais déjà en fait)
Je pensais qu'en 2019 il y avait d'autres techniques pour relier 2 clients a un Tchat ou jeu qu'un exe 24/24 et 7/7. :lol:

@Dobro
Oui j'ai eu un NAS ça fonctionne plutôt bien mais il était sur une connexion en carton. Comme tu dit. (C'est mieux relié a la fibre)

@Marc56
Oui pour le FTP je sais que ce protocole sert a envoyé du fichier. Mais rien empêche d'envoyer un fichier texte a chaque requête entre le serveur et le client. (Même si je suis d'accord. C'est pas fait pour ça :wink: )






@++

_________________
Windows 10 x64, PureBasic 5.71 Beta 1 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Les pros du réseau
MessagePosté: Ven 02/Aoû/2019 9:44 
Hors ligne

Inscription: Sam 08/Fév/2014 15:19
Messages: 1592
Citation:
Mais rien empêche d'envoyer un fichier texte a chaque requête entre le serveur et le client

Oui, mais comment gérer la réponse du serveur au client ? :D
À moins d'un sombre bricolage à base de ReceiveFTPFile() sur un fichier convenu d'avance:
  • Le serveur attend un fichier
  • Le serveur analyse le contenu du fichier
  • Le serveur créé un fichier de réponse
  • Le client envoi des ReceiveFTPFile() jusqu'à ce que le fichier réponse soit présent
Sans oublier qu'il faut alors faire tourner un serveur FTP et donner des droits en écriture au client (donc vérifier les écritures)
:roll: :wink:

_________________
Windows 10 Famille x64 + Linux (Slackware, Debian sur Oracle VirtualBox 6.0)


Dernière édition par Marc56 le Ven 02/Aoû/2019 9:56, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Les pros du réseau
MessagePosté: Ven 02/Aoû/2019 9:55 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 29/Juil/2004 16:33
Messages: 2788
Localisation: Klyntar
Ba y'a pas :lol: le FTP sert de transit entre 2 clients qui discutent ensemble :lol:
Fin bref. Je cherche la petite bête la. C'est pas fait pour on est d'accord.






@++

_________________
Windows 10 x64, PureBasic 5.71 Beta 1 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Les pros du réseau
MessagePosté: Ven 02/Aoû/2019 16:05 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 29/Juil/2004 16:33
Messages: 2788
Localisation: Klyntar
Mais je pensais à quelque chose concernant le NAS.(boîtier tout en 1)

Ce dernier est fonctionnel via linux (comme quasiment tous les serveurs). Et je sais que sur mon NAS, il n'était pas possible de lancer un exe car il n'y avait pas de Windows a l'intérieur. Certe pour héberger du HTML PHP etc... Ça fonctionne bien. Mais pour laisser tourner un exe en permanence, il faut forcément un ordi sous windows allumé H24 ?

Après, je ne suis pas un pro des réseaux. C'est peut être possible via un NAS :lol: D'où mes questions.

Pour réduire niveau taille, il faudrait genre un raspberry aujourd'hui ?






@++

_________________
Windows 10 x64, PureBasic 5.71 Beta 1 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Les pros du réseau
MessagePosté: Ven 02/Aoû/2019 16:33 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 11/Fév/2005 17:34
Messages: 4222
Localisation: Arras, France
Tu mélanges plusieurs choses. D'abord les programmes exécutables existent sur tous les OS. Un tel programme est un fichier contenant du code compilé (sur Windows on dit souvent «un exe» par abus de langage, le programme exécutable ayant en général une extension .exe). Tu peux créer un programme exécutable avec PB sur Linux, Mac ou PC. Ce seront des fichiers différents.

Ensuite un programme serveur (ou parfois service) est donc un programme, compilé ou non, qui tourne en permanence et reçoit des requêtes généralement transmises par l'OS et qui viennent du réseau. S'il les comprend, il y répond. Parfois, il peut faire appel à un autre programme pour y répondre. C'est le principe des CGI.

Le serveur est, là aussi par abus de langage, l'ordinateur sur lequel tourne le programme serveur avec lequel le programme client communique. Ça peut être le même ordinateur ou non, et des OS différents. Il faut juste qu'ils parlent la même langue : le protocole.

Enfin il est tout à fait possible de faire exécuter un programme sur le serveur si on a un programme serveur qui offre cette possibilité et qui a le droit de le faire. Certains programmes serveurs (par exemple apache chez les hébergeurs pro) permettent de limiter ce droit par configuration et sont eux-mêmes limités par l'OS.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Les pros du réseau
MessagePosté: Ven 02/Aoû/2019 16:48 
Hors ligne

Inscription: Sam 08/Fév/2014 15:19
Messages: 1592
@venom

Un NAS est juste un périphérique de stockage réseau (Network Attached Storage)
On leur ajoute souvent des tas de fonctions qui peuvent donc en faire un serveur WEB, FTP, HTTP etc
Les plus connus sont de marque ‎Synology qui fait donc du prêt à l'usage avec interface de gestion graphique (via réseau), mais c'est toujours la même chose: Une mini carte système et un ou des disques durs.

Tu peux te faire un NAS pour 35€ avec une simple carte Raspberry sur laquelle tu mets une carte MiniSD de taille suffisante pour contenir l'OS (linux) et tes programmes et données.
Consommation: moins de 5W soit 30 à 100x- qu'un PC sans écran.
Tu peux lui ajouter ensuite d'autres disques (USB, clé USB), clavier, écran etc.

:!: Cependant, les Raspberry ont des CPU ARM, donc pas de programmes PB dessus. Mais OK pour Python, Perl, C etc

_________________
Windows 10 Famille x64 + Linux (Slackware, Debian sur Oracle VirtualBox 6.0)


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 11 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye