begin process at 2012 05 30 08:07:29
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Système

 > 

Noyau

 > 

Unix: sockets & Co


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Unix: sockets & Co

mardi 20 mai 2008 à 19:05:20 | Unix: sockets & Co

bounkolh

Bonjour,
Je cherche de l'aide pour compléter les ............ du fichier client.c permettant d'interroger le serveur implementé par server.c.

Listing 1 - server.c

/* Inclusion des différentes librairies nécessaires */
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>

#include <sys/types.h>
#include <sys/socket.h>
#include <netinet.in.h>
#include <arpa.inet.h>

int main(int argc, char *argv[])
{
int res;
/* Operandes */
int a, b,buf;
/* socket mise en place côté serveur */
int serv_sock;
/* socket mise en place côté client */
int cli_sock;
/* adresse de la socket distante */
struct sockaddr_in localaddr;
/* longueur de l'adresse */
socklen_t localaddr_len;
/* longueur de l'adresse */
socklen_t distaddr_len;
localaddr_len = sizeof(localaddr);

/* Mise en place de la socket */
serv_sock = socket(AF_INET.SOCK_STREAM, 0);
if (serv_sock = socket(AF_INET.SOCK_STREAM, 0);
if (serv_sock == -1) {
perror(''Impossible de creer la socket'')
exit(-1);
}
/* Mise en place de la structure décrivant l'adresse
* et le port qui seront associés à la socket */
bzero((char*)&localaddr, localaddr_len);
/* Protocole internet */
localaddr.sin_family = AF.INET;
/* On écoute sur l'adresse de boucle locale */
localaddr.sin_addr.s_addr = inet_addr(''127.0.0.1'');
/* On écoute sur le port 1234 */
localaddr.sin_port=htons(1234);

/* On attache la socket au port 1234 sur
* l'adresse locale 127.0.0.1 */
if (bind(serv_sock,
(struct sockaddr *) &localaddr,
localaddr_len) == -1) {
   perror(''Impossible d'attacher la socket'');
           exit(-1);
}
/* Mise en place de l'écoute sur la socket */
if (listen(serv_sock, 1) == -1) {
   perror(''Impossible d'écouter sur la socket'');
   exit(-1);
}
/* On accepte les connexions entrantes */
cli_sock = accept(serv_sock,
(struct sockaddr *) &distaddr,
&distaddr_len);
if (cli_sock == -1) {
   perror(''Erreur de connexion du client'');
   exit(-1);
}
/* on recoit la première operande */
res = recv(cli_sock, &buf; sizeof(int), 0);
if (res != sizeof(int)) {
   perror(''Donnees recues incorrectes'');
   close(serv_sock);
   exit(-1);
}
a = ntohl(buf);
printf(''Recu: %d/n'', a);

/* On recoit la deuxieme operande */
res = recv(cli_sock, &buf, sizeof(in), 0);
if (res != sizeof(int)) {
   perror(''Donnees recues incorrectes'');
   close(serv_sock);
   exit(-1);
}
b = ntohl(buf);
printf(''Recu: %d\n'', b);

buf=htonl(a+b);
printf(''Envoi: %d\n'', a+b);
/* On envoie le resultat */
res=send(cli_sock, &buf, sizeof(int), 0);
if (res != sizeof(int)) {
   perror(''Erreur de transmission de donnees'');
   close(serv_sock);
   exit(-1)
}
close(serv_sock);
close(cli_sock);
return ();
}

Listing 2 - client.c

// Inclusion des différentes librairies necessaires
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>

#include <sys/types.h>
#include <sys/socket.h>

#include <netinet/in.h>
#include <arpa/inet.h>

int main(int argc, char *argv[])
{
int res;
/* Operandes */
int a, b, buf;
/* socket mise en place cote serveur */
int serv_sock;
/* socket mise en place cote client */
int cli_sock;
/* adresse de la socket distante */
struct sockaddr_in distaddr;
/* longueur de l'adresse */
socklen_t distaddr_len;
distaddr_len = sizeof(distaddr);

a=htonl(123);
b=btonl(124);

/* Creation de la socket */
cli.sock = .............................
if (cli_sock == -1) {
   perror(''Impossible de creer la socket'');
   exit(-1);
}
/* Mise en place de la structure decrivant
* l'adresse et le port qui seront associes
* a la socket */
bzero((char*)&distaddr, distaddr_len);
/* Protocole internet */
distaddr.sin_family = .......................
/* On se connecte sur l'adresse de boucle locale */
distaddr.sin_addr.s_addr = inet_addr(''127.0.0.1");
/* On se connecte sur le port 1234 */
distaddr.sin.port = .............................
/* Connexion au serveur */
serv_sock = ....................................
if (serv_sock == -1) {
   perror(''Impossible de se connecter'');
}
/* On envoi la premiere operande */
res = .....................................
if (res != sizeof(int)) {
   perror(''Impossible d'envoyer les donnees'');
   close(cli_sock);
   exit(-1);
}

/* On envoie la seconde operande */
res = send(cli_sock, &b, sizeof(int), 0);
if (res != sizeof(int)) {
   perror(''Impossible d'envoyer les donnees'');
   close(cli_sock);
   exit(-1);
}
/* On recupere le resultat */
res = ....................................
if (res != sizeof(int)) {
   perror(''Impossible de lire les donnees'');
   close(cli_sock);
   exit(-1);
}
printf(''Resultat:%d\n'', ntohl(buf));
.............................
close(serv_sock);
return 0;
}
jeudi 22 mai 2008 à 03:27:50 | Re : Unix: sockets & Co

bounkolh

bonsoir, ci-dessous ce que j'ai pu creuser mais suis pas très sure:

Listing 2 - client.c

// Inclusion des différentes librairies necessaires
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>

#include <sys/types.h>
#include <sys/socket.h>

#include <netinet/in.h>
#include <arpa/inet.h>

int main(int argc, char *argv[])
{
int res;
/* Operandes */
int a, b, buf;
/* socket mise en place cote serveur */
int serv_sock;
/* socket mise en place cote client */
int cli_sock;
/* adresse de la socket distante */
struct sockaddr_in distaddr;
/* longueur de l'adresse */
socklen_t distaddr_len;
distaddr_len = sizeof(distaddr);

a=htonl(123);
b=btonl(124);

/* Creation de la socket */
cli.sock = socket(AF_INET.SOCK_STREAM, 0);
if (cli_sock == -1) {
   perror(''Impossible de creer la socket'');
   exit(-1);
}
/* Mise en place de la structure decrivant
* l'adresse et le port qui seront associes
* a la socket */
bzero((char*)&distaddr, distaddr_len);
/* Protocole internet */
distaddr.sin_family = AF.INET;
/* On se connecte sur l'adresse de boucle locale */
distaddr.sin_addr.s_addr = inet_addr(''127.0.0.1");
/* On se connecte sur le port 1234 */
distaddr.sin.port = htons(1234);
/* Connexion au serveur */
serv_sock = connect(cli_sock, (struct sockaddr *)&distaddr, &distaddr_len);
if (serv_sock == -1) {
   perror(''Impossible de se connecter'');
}
/* On envoi la premiere operande */
res = send(cli_sock, &buf; sizeof(int), 0);
if (res != sizeof(int)) {
   perror(''Impossible d'envoyer les donnees'');
   close(cli_sock);
   exit(-1);
}

/* On envoie la seconde operande */
res = send(cli_sock, &b, sizeof(int), 0);
if (res != sizeof(int)) {
   perror(''Impossible d'envoyer les donnees'');
   close(cli_sock);
   exit(-1);
}
/* On recupere le resultat */
res = recv(cli_sock, &buf, sizeof(int), 0);
if (res != sizeof(int)) {
   perror(''Impossible de lire les donnees'');
   close(cli_sock);
   exit(-1);
}
printf(''Resultat:%d\n'', ntohl(buf));
close(cli_sock);
close(serv_sock);
return 0;
}


Cette discussion est classée dans : int, include, socket, sock, serv


Répondre à ce message

Sujets en rapport avec ce message

telechargement d'un fichier sur internet [ par fredleconte ] Salut, Voila j'essaie de telecharger un fichier http mais je ne sais pas comment recevoir le fichier help please. voici le programme: // Download d'u socket trop lents [ par cid7777777 ] bonjour,jessaye de faire un jeu qui peu se jouera 2 en reseau local.je ne connais absolument rien en reso, mais en fouillant sur le net,  jai trouver socket raw [ par moi zork ] Bonjour,Je suis entrain de m'entrainer sur les socket raw et je bute sur :#include #include using namespace std;int main (void){    int sock;  sock = programmation socket [ par you147 ] salut,j'ai un ptite application de programmation socket de chate client/ serveur sous lunix en C mais il y a un erreur je comprid pas cette erreur aid Fin de recv [ par Ziman ] Bonjour,je fais actuellement une chtite application. J'aimerai juste qu'un client se connecte sur un serveur et qu'il puisse lui envoyer des messages. Erreur de segmentation d'un simple client http sous linux !! [ par nassimatique ] #include #include #include #include #include #include #include #define TAILLE 4096 <b Problème de connexion Socket [ par qhhu ] Bonjour !En temp normal, je programme en java, mais j'ai voulu essayer le c++parce que je trouve que c'est interessant de connaître plusieurs language [C] socket [ par sheorogath ] bonjour ,j'essai de me faire une sorte de lib client dans un premier temps pour utiliser les socket mais avec mon code je ne peut me connecter null pa Client serveur [ par fanch314 ] Je que le serveur et le client échange par internet.Le serveur ne voit pas de client connectéEt le buffer du client contient nimporte quoi.En gros ils [socket et api win]recevoir et envoyer en meme temps [ par shadow1779 ] Bonjour je me suis fais un petit programme irc qui me servira de bot pour auto-op des personne ou d'autre taches diverses, le client aura une boite de


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,702 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales