Mini chat socket

Soyez le premier à donner votre avis sur cette source.

Vue 34 668 fois - Téléchargée 26 864 fois

Description

C'est tout simplement un mini chat, qui permet d�échangé des messages entre le client et le serveur. J�ai fait simple pour que les débutants en sockets comprennent.

Source / Exemple :


#include <stdio.h>
/********************************************

                                                                                      • /

Conclusion :


Ce mini chat est trés simple. Vous pouvez l'améliorer on lisant des cours plus pointu :-p

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1
Date d'inscription
mercredi 21 mai 2008
Statut
Membre
Dernière intervention
9 février 2010

Non non le code y est faut Dl le Zip en revanche ce n'est pas du C ?

car ca en C c'est pas possible il me semble :
printf("::::: Client connected\n\n");
int go = 1;
les déclarations de variable se font en début de fichier non?

Si ce n'est pas du C alors pourquoi les fichier sont nommés Client.c

Ce n'est pas une critique j'aimerais juste comprendre donc a ne pas prendre mal ^^
Messages postés
1
Date d'inscription
vendredi 8 mai 2009
Statut
Membre
Dernière intervention
8 mai 2009

Salut
Je crois que ton code source est vide ... pourrais tu le mettre à jour s'il te plaït ?
Messages postés
18
Date d'inscription
vendredi 5 octobre 2007
Statut
Membre
Dernière intervention
5 février 2008

Hum... j'ai pas fait exprès désolé ....
Messages postés
18
Date d'inscription
vendredi 5 octobre 2007
Statut
Membre
Dernière intervention
5 février 2008

Messages postés
15
Date d'inscription
mercredi 23 août 2006
Statut
Membre
Dernière intervention
20 avril 2008

C'est surtout ça :
"PS: petite remarque, il se peut que le server te renvoi le code source de la page en plusieur messages, donc pense a mettre 2 recv avec des variables différentes."

Quand on fait un code il faut prévoir ce genr de comportement ;)
Par exemple on peut faire une fonction exprés pour recevoir tout les trams, que tu apele "tout les messages", comme ceci par exemple:

/* l'envoi ou la reception de donnée ce fait en petit bloques qui s'appel trams,
Par exemple, si la trame maximale fait 1024 octets, et qu'on veut envoyer une
donnée de 2000 octet, alors sera couper en 2blocs (trams) ... */

/******************************************************************************
*
* Permet de recevoir proprement un Bloc de données
* Retourne la taille de data reçu
*
******************************************************************************/
int recoi_data ( SOCKET socket, char *data )
{
size_t len_data;
size_t data_receved = 0;

char len_data_buffer[10];

/* recevoir la taille de data */
int n = recv (socket, len_data_buffer, sizeof len_data_buffer - 1, 0);
if (n == SOCKET_ERROR)
return SOCKET_ERROR;

len_data_buffer[n] = '\0';
len_data = atoi(len_data_buffer);

while (data_receved != len_data)
{
int n = recv (socket, data + data_receved, sizeof data - 1, 0);

if (n >= 0)
data_receved += n;

else return SOCKET_ERROR;
}

return ((int)data_receved);
}



Et la fonction d'envoi correspandante:

/******************************************************************************
*
* Permet d'envoyer proprement un Bloc de données.
* Retourne la taille de donnée envoyer
*
******************************************************************************/
int envoi_data ( SOCKET socket, char *data )
{
size_t const len_data = strlen (data);
size_t data_sent = 0;

char len_data_buffer[10];
sprintf(len_data_buffer, "%d", len_data);

/* envoi de la taille de data, comme etant une chaine */
int n = send (socket, len_data_buffer, strlen(len_data_buffer), 0);
if (n == SOCKET_ERROR)
return SOCKET_ERROR;

/* envoi du reste, (s'il y a du reste) */
while (data_sent != len_data)
{
n = send (socket, data + data_sent, len_data - data_sent, 0);

if (n >= 0)
data_sent += n;

else return SOCKET_ERROR;
}

return ((int)data_sent);
}



J'ai mis un autre code source simple qui utilise ces fonction ici:
http://www.cppfrance.com/codes/SOCKET-CLIENT-SERVEUR_42385.aspx

;)
Afficher les 16 commentaires

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.

Du même auteur (rtfm321)