[Réseau Client/ Serveur] Programmation ?

Fermé
Arno59 Messages postés 4600 Date d'inscription jeudi 23 octobre 2003 Statut Contributeur Dernière intervention 18 avril 2023 - 3 avril 2007 à 17:35
 SocketsJava - 9 déc. 2009 à 22:09
Bonjour,

Je viens d'avoir un exo à réaliser dont le sujet est le suivant :

-> Programmation d'un clien /serveur:

Un serveur ouvrira un service 1 port donné et se mettra en attente de connexion de la part du futur client.
Un client peut se connecter à un service à partir du moment où le serveur est en phase d'acceptation de connexion (« accept »).

On illustrera ces programmes par un premier serveur qui accepte une connexion à partir d'un client, attend sur cette prise de communication qu'une ligne soit passée, la convertit en minuscule et la renvoie convertie au client
.

Il est demandé :
=> Source programme
=> Schèmas des différents modules
=> les explications

=> Adresse IP + Numéro de Port


J'ai le choix dans le langage de programmation mais quel est le plus utilisé actuellement ?

Pouvez-vous m'aider à réaliser les programmes ?

-----------------------------------
=> Structure des couches RMI
Les connexions et les transferts de données dans RMI sont effectués par Java sur TCP/IP grâce à un protocole propriétaire (JRMP, Java Remote Method Protocol) sur le port 1099.
A partir de Java 2 version 1.3, les communications entre client et serveur s'effectuent grâce au protocole RMI-IIOP (Internet Inter-Orb Protocol), un protocole normalisé par l'OMG (Object Management Group) et utilisé dans l'architecture CORBA.
La transmission de données se fait à travers un système de couches, basées sur le modèle OSI afin de garantir une interopérabilité entre les programmes et les versions de Java.

5.3) Web Service:
Les services web (en anglais web services) représentent un mécanisme de communication entre applications distantes à travers le réseau internet indépendant de tout langage de programmation et de toute plate-forme d'exécution :
utilisant le protocole HTTP comme moyen de transport. Ainsi, les communications s'effectuent sur un support universel, maîtrisé et généralement non filtré par les pare-feux ;
employant une syntaxe basée sur la notation XML pour décrire les appels de fonctions distantes et les données échangées ;
organisant les mécanismes d'appel et de réponse.
Grâce aux services web, les applications peuvent être vues comme un ensemble de services métiers, structurés et correctement décrits, dialoguant selon un standard international plutôt qu'un ensemble d'objets et de méthodes entremêlés.
Le premier bénéfice de ce découpage est la facilité de maintenance de l'application, ainsi que l'interopérabilité permettant de modifier facilement un composant (un service) pour le remplacer par un autre, éventuellement développé par un tiers. Qui plus est, les services web permettent de réduire la complexité d'une application car le développeur peut se focaliser sur un service, indépendamment du reste de l'application.
Les services web facilitent non seulement les échanges entre les applications de l'entreprise mais surtout permettent une ouverture vers les autres entreprises. Les premiers fournisseurs de services web sont ainsi les fournisseurs de services en ligne (météo, bourse, planification d'itinéraire, pages jaunes, etc.), mettant à disposition des développeurs des API (Application Programmable Interface) payantes ou non, permettant d'intégrer leur service au sein d'applications tierces.
Couches
Le fonctionnement des services web repose sur un modèle en couches, dont les trois couches fondamentales sont les suivantes :
Invocation, visant à décrire la structure des messages échangés par les applications.
Découverte, pour permettre de rechercher et de localiser un service web particulier dans un annuaire de services décrivant le nom de la société, l'objectif de chaque service, etc.
Description, dont l'objectif est la description des interfaces (paramètres des fonctions, types de données) des services web.
Standards
Les standards de base utilisés par les Web-Services (SOAP, WSDL) sont normalisés par le W3C (http://www.w3.org/2002/ws/ tandis que l'OASIS est chargée de la standardisation des couches supérieures, plus proches du niveau applicatif (sécurité, etc.).
Invocation
Il existe deux grands standards de services web, tous deux basés sur XML :
XML-RPC (XML Remote Procedure Call) , le plus ancien, fonctionnant sur un principe proc&eaacute;dural et sans gestion des états.
SOAP (Simple Object Access Protocol), fonctionnant selon le modèle objet.
Quel que soit le standard utilisé, le principe de programmation est le même : l'appel de méthode distante est réalisé grâce à une bibliothèque cliente qui transmet la demande au fournisseur de service en la formattant en XML de manière transparente; au niveau du serveur une bibliothèque serveur décode la requête, le serveur fait ses traitement, puis répond grâce à cette même bibliothèque; la bibliothèque client décode enfin la réponse afin qu'elle puisse être utilisée par l'application client.
Découverte
Le protocole standard le plus utilisé pour la découverte de services est UDDI.
Description
Le protocole standard le plus utilisé pour la description de services est WSDL.
Plus d'information
Web services sur le site du W3C

5.3.1) S.O.A : Architecture orientée service
Une architecture orientée services (notée SOA pour Services Oriented Architecture) est une architecture logicielle s'appuyant sur un ensemble de services simples.
L'objectif d'une architecture orientée services est donc de décomposer une fonctionnalité en un ensemble de fonctions basiques, appelées services, fournies par des composants et de décrire finement le schéma d'interaction entre ces services.
L'idée sous-jacente est de cesser de construire la vie de l'entreprise autour d'applications pour faire en sorte de construire une architecture logicielle globale décomposées en services correspondant aux processus métiers de l'entreprise.
Lorsque l'architecture SOA s'appuie sur des web services, on parle alors de WSOA, pour Web Services Oriented Architecture).
Principes généraux d'une architecture orientée service
Il n'existe pas à proprement parler de spécifications officielles d'une architecture SOA, néanmoins les principales notions fédératrices que l'on retrouve dans une telle architecture sont les suivantes :
La notion de service, c'est-à-dire une fonction encapsulée dans un composant que l'on peut interroger à l'aide d'une requête composée d'un ou plusieurs paramètres et fournissant une ou plusieurs réponses. Idéalement chaque service doit être indépendant des autres afin de garantir sa réutilisabilité et son interopérabilité.
La description du service, consistant à décrire les paramètres d'entrée du service et le format et le type des données retournées. Le principal format de description de services est WSDL (Web Services Description Language), normalisé par le W3C.
La publication (en anglais advertising) et la découverte (discovery) des services. La publication consiste à publier dans un registre (en anglais registry ou repository) les services disponibles aux utilisateurs, tandis que la notion de découverte recouvre la possibilité de rechercher un service parmi ceux qui ont été publiés. Le principal standard utilisé est UDDI (Universal Description Discovery and Integration), normalisé par l'OASIS.
L'invocation, représentant la connexion et l'interaction du client avec le service. Le principal protocole utilisé pour l'invocation de services est SOAP (Simple Object Access Protocol).
Avantages d'une architecture orientée service
Une architecture orientée services permet d'obtenir tous les avantages d'une architecture client-serveur et notamment :
Une modularité permettant de remplacer facilement un composant (service) par un autre
Une réutilisabilité possible des composants (par opposition à une système tout-en-un fait sur mesure pour une organisation).
De meilleures possibilités d'évolution (il suffit de faire évoluer un service ou d'ajouter un nouveau service)
Une plus grande tolérance aux pannes
Une maintenance facilitée

Ce document intitulé « Web Services - Architecture orientée service (SOA) » issu de l'encyclopédie informatique Comment Ça Marche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.

5.3.2) XML-RPC
Le standard XML-RPC, défini depuis 1998, est un protocole basé sur XML permettant l'invocation de procédures à distance.




5.3.3) SOAP
SOAP (Simple Object Access Protocol) est un protocole définit à l'origine par Microsoft, puis standardisé par le W3C, utilisant la notation XML permettant de définir les mécanismes d'échanges d'information entre des clients et des fournisseurs de services web.
Le mécanisme de transport des messages SOAP peut être le protocole HTTP, SMTP, FTP, etc.
Il existe des bibliothèques SOAP pour de très nombreux langages, dont Perl, C, C++, C#, Python, Java, Visual Basic/.NET, PHP, Ruby, etc.
Modes de communication
Types de données
SOAP supporte de nombreux types de données en tant que paramètres :
entiers
dates
booléens
chaînes de caractères
tableaux (structures)
tableaux associatifs
Gestion des erreurs
Le protocole SOAP définit un mécanisme d'exceptions permettant de signaler la présence d'erreurs.

5.3.4) UDDI
Le standard UDDI (Universal Description Discovery and Integration) défini par l'OASIS vise à décrire une manière standard de publier et d'interroger les services web proposés par un réseau, généralement au sein d'un service d'annuaire recensant les services web de l'organisation.
Plus d'information
http://uddi.microsoft.com/

5.3.5) WSDL
Le standard WSDL (Web Service Description Language) est un langage reposant sur la notation XML permettant de décrire les services web. WSDL permet ainsi de décrire l'emplacement du service web ainsi que les opérations (méthodes, paramètres et valeurs de retour) que le service propose.
Structure d'un document WSDL
Un document WSDL est un fichier au format XML utilisant les éléments suivants :
portType, définissant le service web, en particulier les opérations qu'il réalise et le type de messages échangés.
message, comprenant une ou plusieurs parties représentant les paramètres d'entrée.
types, définissant les types de données utilisés par le service web.
binding, précisant le protocole utilisé et le format de message.


D'avance merci.

15 réponses

sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 659
17 avril 2007 à 15:28
Avez-vous une éventuelle solution du problème ?
=> Programme qui permet d'ouvrir sur un port donné et se mettre en attente de connexion



Euh... oui :

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('', 12345))
s.listen(1)
conn, addr = s.accept()
print 'Un client s'est connecté. Son adresse IP/port est:', addr
while True:
    data = conn.recv(1024)
    if not data: break
    print "Le client a envoyé:",data
conn.close()
5
Arno59 Messages postés 4600 Date d'inscription jeudi 23 octobre 2003 Statut Contributeur Dernière intervention 18 avril 2023 486
17 avril 2007 à 16:35
Merci,

Cela permet d'ouvrir un port.
0
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 659
3 avril 2007 à 17:42
Voilà un exemple de client et de serveur en Python: http://docs.python.org/lib/socket-example.html

Le serveur fait 15 lignes.
Le client 11 lignes

Le client se connecte sur le serveur sur le port 50007, envoie "Hello, world !".
Le serveur renvoie au client ce qu'il a envoyé.

Ajouter le renvoie de la même chaîne en minuscules ne devrait pas poser de problème majeur :-)

C'est très simple.


Maintenant, au vue du copier-coller massif qui suit le sujet, je présume qu'ils voudraient que tu fasse des webservices (c'est à dire formatter la requête et réponse en XML, et utiliser HTTP pour le transport).
Là, c'est un peu plus chiant, parcequ'il faut se farcir la construction et le décorticage de documents XML
(la partie HTTP est très simple, elle).

S'il faut coller aux standards SOAP, ça va être un peu plus chiant, mais faisable.

Si c'est les normes WS-* qu'il faut appliquer, tu peux te tirer une balle tout de suite.

Quant à WSDL et UDDI, ils me semblent franchement overkill dans ton cas.
1
bonjour sebsauvage,

veuillez m'excuser de vous déranger.
auriez-vous le même document pour le langage de programmation Java ?

sachez que votre réponse m'a bien aidé dans mon travail, car j'ai pu observer le fonctionnement client:serveur, mais en Java c'est plus compliqué pour moi ! =D

Merci d'avance !

phil.
0
Arno59 Messages postés 4600 Date d'inscription jeudi 23 octobre 2003 Statut Contributeur Dernière intervention 18 avril 2023 486
3 avril 2007 à 17:49
Bonjour,

Je te remercie pour m'avoir rapidement.
Je vais approfondir la recherche demain, je te tiens au courant.
1
Arno59 Messages postés 4600 Date d'inscription jeudi 23 octobre 2003 Statut Contributeur Dernière intervention 18 avril 2023 486
7 avril 2007 à 10:09
Merci pour ton aide.

Je vais commencer à vérifier les sources.
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
=>>comment ecrire un exemple simple de client serveur en java builder avec la methode rmi ,svp.


=>>merci d'avance.

je sais pas c koi la méthode rmi ,mais je le fais en java un programme serveur client. si ca tinteresse je te montre comment
1
Arno59 Messages postés 4600 Date d'inscription jeudi 23 octobre 2003 Statut Contributeur Dernière intervention 18 avril 2023 486
17 avril 2007 à 15:12
Bonjour à tous,

Avez-vous une éventuelle solution du problème ?

=> Programme qui permet d'ouvrir sur un port donné et se mettre en attente
de connexion
0
bonjour a tous je doit effectuer un projet qui est de connecter un serveur client simple mais qui marche en C ou C++ sur windows mai je trouve pa commen faire.. eske kelkun peu maider?
0
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 659
18 avril 2007 à 10:02
0
svp j'ai besoin d'un programme client/serveur en c++ mais pas sous unix svp aidez moi
0
g 1 application client serveur a developper avec les socket sous linux et je doit utiliser le client ssh .vous pouvez m'aider ????????
0
sebs211@hotmail.fr
15 janv. 2008 à 18:28
Tu serai pas en GEII2 au cnam toi?
Parce que j' y suis et j'ai le mem pbm !!!!
0
Salut le monde, je suis un étudiant en informatique et actuallement je chercher des cours ou des livres pour le langage c# et pour vusial studio.net 2005.
Merci pour votre aide.
foulhkam.
0
drafif redouane
21 avril 2008 à 12:34
comment ecrire un exemple simple de client serveur en java builder avec la methode rmi ,svp.


merci d'avance.
0
je veux creer une application client serveur en utilisant la technologe com de microsoft
et j'ai besoin de votre aide surtout pour creer un serveur avec des parametre d'entree en c++builder
et merci pour votre aide
0
Arno59 Messages postés 4600 Date d'inscription jeudi 23 octobre 2003 Statut Contributeur Dernière intervention 18 avril 2023 486
3 avril 2007 à 17:53
Lors de mes recherches sur le net, j'ai obtenu des informations et je me demander si le WebService est une solution.

Donc la partie a traité n'est que la zone en italique.
-1
juniordj Messages postés 2 Date d'inscription lundi 28 avril 2008 Statut Membre Dernière intervention 28 mai 2008
16 mai 2008 à 13:18
oui Le WebService est une solution
0
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 659
3 avril 2007 à 21:48
Disons que les webservices étaient partis comme une bonne idée, mais dans la pratique c'est devenu une usine à gaz pas possible.
-1