A voir également:
- Utilisation de socket.h C++ sous Unix/Linux
- Notice d'utilisation - Guide
- Utilisation chromecast - Guide
- Diskinternals linux reader - Télécharger - Stockage
- Linux mint 32 bits - Télécharger - Systèmes d'exploitation
- Linux live usb creator - Télécharger - Outils Internet
6 réponses
Ben voilà j'ai mon code source serveur :
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <strings.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <unistd.h>
#define PORT 12345
char msg[]=
"\t\t\tReponse\n"
#define YES 1
#define NO 0
int main(int argc, char *argv[])
{
int sockfd, newfd, size;
struct sockaddr_in local;
struct sockaddr_in remote;
bzero(&local, sizeof(local));
local.sin_family = AF_INET;
local.sin_port = htons(PORT);
local.sin_addr.s_addr = INADDR_ANY;
bzero(&(local.sin_zero), 8);
if((sockfd=socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
perror("socket");
exit(1);
}
if(bind(sockfd, (struct sockaddr *)&local, sizeof(struct sockaddr)) == -1)
{
perror("bind");
exit(1);
}
if(listen(sockfd, 5) == -1)
{
perror("listen");
exit(1);
}
size = sizeof(struct sockaddr_in);
while(1)
{
if((newfd=accept(sockfd, (struct sockaddr *)&remote, &size)) == -1)
{
perror("accept");
exit(1);
}
if (!fork())
{
send(newfd,msg,sizeof(msg), 0);
close(0);
close(newfd);
}
}
return(0);
}
Et mon code source client :
#include <stdio.h>
#include <netdb.h>
#include <fcntl.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include<strings.h>
#define _SERV "127.0.0.1" //l'IP du serveur, par forcément 127.0.0.1
#define _PORT 12345
int main(int argc, char *argv[])
{
int port,s;
struct sockaddr_in serv_addr;
struct hostent *server;
port = _PORT;
server = gethostbyname(_SERV);
if (!server)
{
fprintf(stderr, "Impossible de résoudre \"%s\"", _SERV);
return 1;
}
s = socket(AF_INET, SOCK_STREAM, 0);
bzero(&serv_addr, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
bcopy(server->h_addr, &serv_addr.sin_addr.s_addr, server->h_length);
serv_addr.sin_port = htons(port);
if (connect(s, &serv_addr, sizeof(serv_addr)) < 0)
{
perror("Impossible de se connecter à l'adresse");
return 1;
}
return 0;
}
PB : ça plante toujours au connect, ça me dit Connection refused :(
D'où ça vient ??
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <strings.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <unistd.h>
#define PORT 12345
char msg[]=
"\t\t\tReponse\n"
#define YES 1
#define NO 0
int main(int argc, char *argv[])
{
int sockfd, newfd, size;
struct sockaddr_in local;
struct sockaddr_in remote;
bzero(&local, sizeof(local));
local.sin_family = AF_INET;
local.sin_port = htons(PORT);
local.sin_addr.s_addr = INADDR_ANY;
bzero(&(local.sin_zero), 8);
if((sockfd=socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
perror("socket");
exit(1);
}
if(bind(sockfd, (struct sockaddr *)&local, sizeof(struct sockaddr)) == -1)
{
perror("bind");
exit(1);
}
if(listen(sockfd, 5) == -1)
{
perror("listen");
exit(1);
}
size = sizeof(struct sockaddr_in);
while(1)
{
if((newfd=accept(sockfd, (struct sockaddr *)&remote, &size)) == -1)
{
perror("accept");
exit(1);
}
if (!fork())
{
send(newfd,msg,sizeof(msg), 0);
close(0);
close(newfd);
}
}
return(0);
}
Et mon code source client :
#include <stdio.h>
#include <netdb.h>
#include <fcntl.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include<strings.h>
#define _SERV "127.0.0.1" //l'IP du serveur, par forcément 127.0.0.1
#define _PORT 12345
int main(int argc, char *argv[])
{
int port,s;
struct sockaddr_in serv_addr;
struct hostent *server;
port = _PORT;
server = gethostbyname(_SERV);
if (!server)
{
fprintf(stderr, "Impossible de résoudre \"%s\"", _SERV);
return 1;
}
s = socket(AF_INET, SOCK_STREAM, 0);
bzero(&serv_addr, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
bcopy(server->h_addr, &serv_addr.sin_addr.s_addr, server->h_length);
serv_addr.sin_port = htons(port);
if (connect(s, &serv_addr, sizeof(serv_addr)) < 0)
{
perror("Impossible de se connecter à l'adresse");
return 1;
}
return 0;
}
PB : ça plante toujours au connect, ça me dit Connection refused :(
D'où ça vient ??
Merci beaucoup ...
Je cherchais déséspérément un exemple.
Voici le code de mon serveur (client=`telnet localhost 59300`)
serv.c
====#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <strings.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <unistd.h>
#include "config.c"
int main(int argc, char *argv[])
{
int sockfd, newfd, size, count_req, t;
struct sockaddr_in local;
struct sockaddr_in remote;
bzero(&local, sizeof(local));
local.sin_family = AF_INET;
local.sin_port = htons( PORT );
local.sin_addr.s_addr = INADDR_ANY;
bzero(&(local.sin_zero), 8);
if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == SOCKET_ERROR)
{
fprintf(stderr, "Socket creation error\n");
return EXIT_FAILURE;
}
if(bind(sockfd, (struct sockaddr *)&local, sizeof(struct sockaddr)) == SOCKET_ERROR)
{
fprintf(stderr, "Can't link socket\n");
return EXIT_FAILURE;
}
if(listen(sockfd, BACKLOG) == SOCKET_ERROR)
{
fprintf(stderr, "Can't listen\n");
return EXIT_FAILURE;
}
size = sizeof(struct sockaddr_in);
for(count_req = 0; count_req <= MAX_REQ; count_req++)
{
if((t = accept(sockfd, (struct sockaddr *)&remote, &size)) == SOCKET_ERROR)
{
fprintf(stderr, "Can't accept\n");
return EXIT_FAILURE;
}
send(t, "Bienvenue", sizeof("Bienvenue"), 0);
}
close(newfd);
return EXIT_SUCCESS;
}
config.c
======
#define PORT 59300
#define BACKLOG 100
#define MAX_REQ 100
#define YES 1
#define NO 0
#define SOCKET_ERROR -1
Je cherchais déséspérément un exemple.
Voici le code de mon serveur (client=`telnet localhost 59300`)
serv.c
====#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <strings.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <unistd.h>
#include "config.c"
int main(int argc, char *argv[])
{
int sockfd, newfd, size, count_req, t;
struct sockaddr_in local;
struct sockaddr_in remote;
bzero(&local, sizeof(local));
local.sin_family = AF_INET;
local.sin_port = htons( PORT );
local.sin_addr.s_addr = INADDR_ANY;
bzero(&(local.sin_zero), 8);
if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == SOCKET_ERROR)
{
fprintf(stderr, "Socket creation error\n");
return EXIT_FAILURE;
}
if(bind(sockfd, (struct sockaddr *)&local, sizeof(struct sockaddr)) == SOCKET_ERROR)
{
fprintf(stderr, "Can't link socket\n");
return EXIT_FAILURE;
}
if(listen(sockfd, BACKLOG) == SOCKET_ERROR)
{
fprintf(stderr, "Can't listen\n");
return EXIT_FAILURE;
}
size = sizeof(struct sockaddr_in);
for(count_req = 0; count_req <= MAX_REQ; count_req++)
{
if((t = accept(sockfd, (struct sockaddr *)&remote, &size)) == SOCKET_ERROR)
{
fprintf(stderr, "Can't accept\n");
return EXIT_FAILURE;
}
send(t, "Bienvenue", sizeof("Bienvenue"), 0);
}
close(newfd);
return EXIT_SUCCESS;
}
config.c
======
#define PORT 59300
#define BACKLOG 100
#define MAX_REQ 100
#define YES 1
#define NO 0
#define SOCKET_ERROR -1
leprechaun
Messages postés
265
Date d'inscription
jeudi 16 mai 2002
Statut
Membre
Dernière intervention
18 mars 2003
10
18 juin 2002 à 21:41
18 juin 2002 à 21:41
En fait en y regardant de tres pres je crois qu'il y'a pas mal d'erreur ds mon code (meme de loin d'ailleurs:-)).
A moins qu'il y'est juste eu un melange de genre...
en faite je n'ais pas utilisé la structure hostent alors que j'aurais du.
Mais je crois me souvenir que le bzero et bcopy ne fonctionnait pas bien.
Desolé de ne pouvoir t'aider plus :{ BooooooH
TIENS moi au courant de tes modifs
Un jour je serai Castor a la place de Castor!!!
Good Luck
A moins qu'il y'est juste eu un melange de genre...
en faite je n'ais pas utilisé la structure hostent alors que j'aurais du.
Mais je crois me souvenir que le bzero et bcopy ne fonctionnait pas bien.
Desolé de ne pouvoir t'aider plus :{ BooooooH
TIENS moi au courant de tes modifs
Un jour je serai Castor a la place de Castor!!!
Good Luck
Aaaaaaaaaaaa que voi-je ! horreur, ne jamais inclure un fichier ".c"! les headers existe pour sa !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
oli7350
Messages postés
141
Date d'inscription
mercredi 12 août 2009
Statut
Membre
Dernière intervention
15 novembre 2010
16 déc. 2009 à 15:26
16 déc. 2009 à 15:26
re les amis je suis sous windows .
je debute en programmation est j ai dev c ++ est codcebloks .
je prend condole aplication .
je rentre le code donnée precedement et j ai des erreur de compil .
ceci avec tout les socket . ++
je debute en programmation est j ai dev c ++ est codcebloks .
je prend condole aplication .
je rentre le code donnée precedement et j ai des erreur de compil .
ceci avec tout les socket . ++
oli7350
Messages postés
141
Date d'inscription
mercredi 12 août 2009
Statut
Membre
Dernière intervention
15 novembre 2010
16 déc. 2009 à 15:27
16 déc. 2009 à 15:27
re les amis je suis sous windows .
je debute en programmation est j ai dev c ++ est codcebloks .
je prend condole aplication .
je rentre le code donnée precedement et j ai des erreur de compil .
ceci avec tout les socket . ++
je debute en programmation est j ai dev c ++ est codcebloks .
je prend condole aplication .
je rentre le code donnée precedement et j ai des erreur de compil .
ceci avec tout les socket . ++
C'est normal le code donné plus ne peut pas fonctionner sous windows, du fait de certains includes associés au début du code
Cet include par exemple est uniquement disponible sous unix/linux.
#include <sys/socket.h>
Si tu veux vraiment utiliser les sockets sous windows, tu peux utiliser la librairie "winsock", mais tu devras apporter des modifications dans le code pour obtenir le même résultat.
Cordialement
Fred
Cet include par exemple est uniquement disponible sous unix/linux.
#include <sys/socket.h>
Si tu veux vraiment utiliser les sockets sous windows, tu peux utiliser la librairie "winsock", mais tu devras apporter des modifications dans le code pour obtenir le même résultat.
Cordialement
Fred
oli7350
Messages postés
141
Date d'inscription
mercredi 12 août 2009
Statut
Membre
Dernière intervention
15 novembre 2010
15 nov. 2010 à 14:12
15 nov. 2010 à 14:12
Merci beaucoup pour ta réponse , et désolé pour les phautes d'orthographe , ..
18 juin 2002 à 21:31
__ C'est beau le C
1_ tu utilise 'gethostbyname(_SERV);' alors que ds ta structure de prg tu devrais plus utiliser: gethostname(_SERV);' , et ajouté au debut du prog: #define _SERV "localhost"
2_ Je crois que tu oublies aussi de preciser l'adresse IP de ton srv:
remplace la ligne
bcopy(server->h_addr, &serv_addr.sin_addr.s_addr, server->h_length);
par
serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
3_ Ds ton connect cast ton 2nd parametre avec 'struct_sockaddr'
4_ Tu oublies de fermer 's'
Peut etre que ces changements pourront t'aider:
#define _SERV "localhost" //l'IP du serveur, par forcément 127.0.0.1
#define _PORT 12345
int main(int argc, char *argv[])
{
int port,s;
struct sockaddr_in serv_addr;
struct hostent *server;
port = _PORT;
server = gethostbyname(_SERV);
if (!server)
{
fprintf(stderr, "Hote inconnu: \"%s\"", _SERV);
exit(1);
}
s = socket(AF_INET, SOCK_STREAM, 0);
bzero(&serv_addr, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
serv_addr.sin_port = htons(port);
if (connect(s, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0)
{
perror("Impossible de se connecter à l'adresse");
exit(1);
}
close(s);
exit(0);
}
TIENS MOI AU COURANT
Un jour je serai Castor a la place de Castor!!!
Good Luck
18 juin 2002 à 21:34
Ds le nouveau source, vous aurez evidemment corrigé vous meme:
Il ne fallait pas lire
server = gethostbyname(_SERV);
mais bien
server = gethostname(_SERV);
Un jour je serai Castor a la place de Castor!!!
Good Luck
10 déc. 2010 à 21:55
11 janv. 2011 à 16:19