Serveur/client [Résolu]

Florentcrochet 7 Messages postés dimanche 3 avril 2005Date d'inscription 5 avril 2008 Dernière intervention - 6 févr. 2008 à 20:58 - Dernière réponse : Florentcrochet 7 Messages postés dimanche 3 avril 2005Date d'inscription 5 avril 2008 Dernière intervention
- 7 févr. 2008 à 13:07
Bonjour ,

Mon but est de creer une connection entre un serveur et un client permettant d'envoyer et recevoir des messages.

Avec le modèle asynchrone , je rencontre beaucoup trop de problème de codage même si d'apres ce que j'ai compris il est plus sur.J'ai cherché des réponse suite à ces problèmes et la plupart des codeurs ont certifié avoir réussi purement et simplement avec la méthode synchrone.

Je vous demande donc si vous connaissez un tutorial (que je n'ai pas trouvé) ou si vous avez un petit exemple simulant tout simplement , une connection entre deux socket puis l'envoi de données de l'un a l'autre avec retour des données en synchrone (sans le callback donc).Je ne vous demande pas la lune , juste les fonction nécéssaires : écoute , connection , envoi ,reception , si j'ai bien compris.

Merci d'avance.Au revoir.
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
cs_wizad 356 Messages postés samedi 30 octobre 2004Date d'inscription 14 avril 2009 Dernière intervention - 7 févr. 2008 à 09:48
3
Merci
Je ne sait pas quels sont tes contraintes de développement mais je peux te suggérer de regarder vers cette librairie : http://www.csharpfr.com/codes/NETACCESS-BETA-LIBRAIRIE-APPLICATION-CLIENTS-SERVEUR_44032.aspx
Elle permet d'implémenter un système clients/serveur complet.

Merci cs_wizad 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de cs_wizad
Meilleure réponse
Florentcrochet 7 Messages postés dimanche 3 avril 2005Date d'inscription 5 avril 2008 Dernière intervention - 7 févr. 2008 à 13:05
3
Merci
Re , je comprend pas grand chose au code lol.
VOila mon code , et l'erreur lors du callback de connection :
Le but est de connecter serveur et client , et d'envoyer "buf" au serveur . Le but est aussi de pouvoir envoyer du serveur au client.
public

classReseau{

Numberone Nbo;
// déclaration d'un objet de type numberone

public
Socket socketServ =
new
Socket(
AddressFamily.InterNetwork,
SocketType.Stream,
ProtocolType.Tcp);

public
Socket socketCli =
new
Socket(
AddressFamily.InterNetwork,
SocketType.Stream,
ProtocolType.Tcp);

public
Socket socketToCli =
new
Socket(
AddressFamily.InterNetwork,
SocketType.Stream,
ProtocolType.Tcp);

public
bool bType;
// variable visant à contenir le type : serveur ou client défini dans config

public
int read ;
// Variables d'envoi/reception

public
int send ;

public
byte[] buf = { 155 };
// tableau de Données à envoyer

public
byte[] IP =
new
byte[4];
//tableau nécéssaire a IPadress

public
byte[] BufRecept =
new
byte[1];
// Tableau visant a recevoir des données 

public
enum
TEtatConnection {CONNECTE , DECONNECTE , ECOUTE };
// Enumeration pour les états cde connection

public
TEtatConnection Etat;

public Reseau(
Numberone Nb){

Nbo = Nb;

Etat =

Reseau.
TEtatConnection.DECONNECTE;
//Affecte le statut deconnecté}

 

.//Serveur

// Fonction qui permet de mettre en écoute

public
void Ecoute(){

System.Net.

IPAddress ipAdd =
new System.Net.
IPAddress(IP);
// définie l'ipSystem.Net.

IPEndPoint EP =
new System.Net.
IPEndPoint(ipAdd, 503);socketServ.Bind(EP);

// Lance l'écoute sur le port voulu , cherchant l'adresse ip rentréesocketServ.Listen(1);

// Nombre de connections que le serveur peut prendre en même tempssocketServ.BeginAccept(

new
AsyncCallback(
this.connexionAcceptCallback), socketServ);
// Lance l'attenteEtat =

TEtatConnection.ECOUTE;}

// Fonction mettant fin à l'attente ,accepte la connection

private
void connexionAcceptCallback(
IAsyncResult asyncResult)  ERREUR : L'objet IAsyncResult n'a pas été retourné de la méthode  asynchrone correspondante sur cette classe.
Nom du paramètre : asyncResult{

socketCli = socketServ.EndAccept(asyncResult);

}

 

 

 

 

//Client

//Fonction de connection

public
void Connexion(){

System.Net.

IPAddress ipAdd =
new System.Net.
IPAddress(IP);
// définie l'ipSystem.Net.

IPEndPoint EP =
new System.Net.
IPEndPoint(ipAdd, 503);socketCli.BeginConnect(EP,

new
AsyncCallback(connexionAcceptCallback), socketCli);

//Affecte l'état connecté si on est connecté à la socket client

if (socketCli.Connected){

Etat =

TEtatConnection.CONNECTE;}

}

// Fonction mettant fin à la connection au serveur,ils sont connecté

private
void connexionConnectCallback(
IAsyncResult asynresult){

socketCli.EndConnect(asynresult);

}

// Fonction d'envoi reception

// Envoi d'un message Client au serveur

public
void EnvoiMessage(){

socketServ.BeginReceive(BufRecept, 0, 1,

SocketFlags.None,
new
AsyncCallback(ReceiveCallback), socketServ);
// Commence la réceptionsocketCli.Send(buf);

//envoi le tableau de byte buf

}

//Fonction de rapel pour la reception d'un mesage

private
void ReceiveCallback (
IAsyncResult asyncResult){
Nbo.lblTest.Text ASCIIEncoding.ASCII.GetString(BufRecept, 0, 1);read socketServ.EndReceive(asyncResult);

}

}

Merci Florentcrochet 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de Florentcrochet
Meilleure réponse
Florentcrochet 7 Messages postés dimanche 3 avril 2005Date d'inscription 5 avril 2008 Dernière intervention - 7 févr. 2008 à 13:07
3
Merci
ENfin ce n'est pas une erreur , le programme est lancé sans aucune erreur ni avertissement . Mais lors de l'execution ce problème aparait.

Merci Florentcrochet 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de Florentcrochet

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.