Les pros du réseau
Les pros du réseau
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)
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.
@++
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)
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.
@++
Dernière modification par venom le jeu. 01/août/2019 15:56, modifié 1 fois.
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Re: Les pros du réseau
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
Coté serveur
Coté 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
Coté serveur
Code : Tout sélectionner
;- 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)
Code : Tout sélectionner
;- 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)
@++
Dernière modification par venom le ven. 02/août/2019 11:40, modifié 1 fois.
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
- TazNormand
- Messages : 1294
- Inscription : ven. 27/oct./2006 12:19
- Localisation : Calvados (14)
Re: Les pros du réseau
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 ), 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
Voilà
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 ), 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
Voilà
Re: Les pros du réseau
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 :
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
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 :
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
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Re: Les pros du réseau
Si, mais pas depuis l’extérieur du réseau local sur lequel se trouve le serveur.Mais pourtant il est impossible de lancer un exe sur un serveur
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.laisser un pc constamment allumé avec l'exe serveur dessus
Non, FTP c'est pour transférer des fichiers, pas des phrases.Un simple Tchat c'est facile on envoie du texte en FTP et ça peut le faire
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.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.
Re: Les pros du réseau
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.
@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 )
@++
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.
@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 )
@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Re: Les pros du réseau
Oui, mais comment gérer la réponse du serveur au client ?Mais rien empêche d'envoyer un fichier texte a chaque requête entre le serveur et le client
À 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
Dernière modification par Marc56 le ven. 02/août/2019 9:56, modifié 1 fois.
Re: Les pros du réseau
Ba y'a pas le FTP sert de transit entre 2 clients qui discutent ensemble
Fin bref. Je cherche la petite bête la. C'est pas fait pour on est d'accord.
@++
Fin bref. Je cherche la petite bête la. C'est pas fait pour on est d'accord.
@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Re: Les pros du réseau
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 D'où mes questions.
Pour réduire niveau taille, il faudrait genre un raspberry aujourd'hui ?
@++
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 D'où mes questions.
Pour réduire niveau taille, il faudrait genre un raspberry aujourd'hui ?
@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Re: Les pros du réseau
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.
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.
Re: Les pros du réseau
@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
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