Pg serveur tcp sur linux
Fermé
tacha84
-
17 janv. 2008 à 22:50
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 18 janv. 2008 à 00:07
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 18 janv. 2008 à 00:07
A voir également:
- Pg serveur tcp sur linux
- Tcp optimizer - Télécharger - Optimisation
- Udp vs tcp - Guide
- Serveur pop - Guide
- Émulateur linux ✓ - Forum Linux / Unix
- Que veut dire pg - Forum Loisirs / Divertissements
1 réponse
mamiemando
Messages postés
33079
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
23 avril 2024
7 749
18 janv. 2008 à 00:07
18 janv. 2008 à 00:07
Le truc c'est qu'en postant ton sujet à 22h50 pour le lendemain tu ne mets pas toutes les chances de ton côté :s
Malheureusement ce programme n'a hélas aucune chance de compiler car il y a beaucoup de fautes :
1) les commentaires /* doivent être fermé par */ :
2) il manque des guillemets
3) il y a un e en trop à return, l'accolade du main n'est pas fermée. il y a un e en trop à #include<sys/typees.h>
4) return n'est pas une fonction donc pas de parenthèse :
5) tu as écris arg c au lieu de argc
6) il y a des problèmes de parenthèses
7) ... des fautes de frappes :
8) ... et des virgules manquantes :
Voici une version partiellement corrigée (mais qui ne compile pas et vu l'heure je vais m'arrêter là) :
Il reste encore les erreurs :
Afin que tu puisse travailler sous windows je t'invite très fortement :
1) soit à installer putty et à te connecter à un serveur linux :
https://www.chiark.greenend.org.uk/~sgtatham/putty/
2) soit à installer un environnement C++ comme dev-cpp ou code::blocks
http://www.bloodshed.net/
http://www.codeblocks.org/
3) soit à installer cygwin (pour avoir sous windows l'équivalent d'un linux). Tu peux en outre installer un compilateur (g++), et openssh (en particulier le client ssh) pour pouvoir te connecter en ssh sur un serveur linux si besoin
http://www.cygwin.com/
4) soit installer linux :-)
Bonne chance
Malheureusement ce programme n'a hélas aucune chance de compiler car il y a beaucoup de fautes :
1) les commentaires /* doivent être fermé par */ :
/*creation de socket */ ...
2) il manque des guillemets
perror("bind"); perror("close socket d'ecoute");
3) il y a un e en trop à return, l'accolade du main n'est pas fermée. il y a un e en trop à #include<sys/typees.h>
4) return n'est pas une fonction donc pas de parenthèse :
return 0;
5) tu as écris arg c au lieu de argc
6) il y a des problèmes de parenthèses
res=bind(sock_ecoute,(struct sockaddr *)&adresse_loc,sizeof(*adresse_loc)); printf("serveur TCP sur port numéro %d\n",adresse_loc.sin_port);
7) ... des fautes de frappes :
int i,res,sock_ecoute,sock_service(2),taille_adr; sock_ecoute=socket(AF_INET,SOCK_STREAM,0);
8) ... et des virgules manquantes :
printf("demande de connexion venant de l'hote %s\n",inet_ntoa(adresse_dist.sin_addr));
Voici une version partiellement corrigée (mais qui ne compile pas et vu l'heure je vais m'arrêter là) :
#include<stdio.h> #include<unistd.h> #include<sys/types.h> #include<sys/socket.h> #include<sys/un.h> #include<netinet/in.h> #include<netdb.h> #include<stdlib.h> int main(int argc,char **argv){ int i,res,sock_ecoute,sock_service(2),taille_adr; struct sockaddr_in adresse_loc,adresse_dist; char c; if (argc!=2){ printf("usage:%s<port_num\n",argv[0]); exit(1); } //creation de socket sock_ecoute=socket(AF_INET,SOCK_STREAM,0); if(sock_ecoute==-1){ perror("socket"); exit(2); } else printf("socket cree\n"); // preparation de l'adresse locale adresse_loc.sin_family=AF_INET; adresse_loc.sin_port=htons(atoi(argv[1])); adresse_loc.sin_addr.s_addr=hton1(INADDR_ANY); //INADDR_ANY donne ladresse ip de la machine locale*/ //attachement du socket res=bind(sock_ecoute,(struct sockaddr *)&adresse_loc,sizeof(*adresse_loc)); if (res==-i){ perror("bind"); exit(3); } else printf("socket attaché\n"); printf("serveur TCP sur port numéro %d\n",adresse_loc.sin_port); //debut de l'ecoute res=listen(sock_ecoute,10); if(res==-1){ perror("listen"); exit(4); } else printf("Serveur TCP commence l'ecoute\n"); //prise en compte de deux connexions taille_adr=sizeof(adresse_dist); for(i=0;i<1;i++){ sock_service[i]=accept(sock_ecoute,(struct sockaddr *)&adresse_dist,&taille_adr); if(res==-1){ perror("accept"); } printf("demande de connexion venant de l'hote %s\n",inet_ntoa(adresse_dist.sin_addr)); printf("descripteur du socket de service %d\n",sock_service[i]); if(i==0) printf("serveur attend seconde connexion\n"); else printf("les deux connexions se sont bien deroulées\n"); } printf("RETURN pour deconnecter les sockets du serveur\n"); scanf("%c",&c); //attente d'un return*/ //fermeture des deux socket de service for(i=0;i<2;i++) { res=close(sock_service[i]); if(res==-1) { perror("close"); } } //fermeture de socket d'ecoute res=close(sock_ecoute); if (res==-1){ perror("close socket d'ecoute"); exit(5); } return 0; }
Il reste encore les erreurs :
(mando@aldur) (~) $ g++ -W -Wall plop.cpp plop.cpp: In function ‘int main(int, char**)’: plop.cpp:32: error: ‘hton1’ was not declared in this scope plop.cpp:36: error: no match for ‘operator*’ in ‘*adresse_loc’ plop.cpp:58: error: invalid types ‘int[int]’ for array subscript plop.cpp:58: error: invalid conversion from ‘int*’ to ‘socklen_t*’ plop.cpp:58: error: initializing argument 3 of ‘int accept(int, sockaddr*, socklen_t*)’ plop.cpp:62: error: ‘inet_ntoa’ was not declared in this scope plop.cpp:63: error: invalid types ‘int[int]’ for array subscript plop.cpp:76: error: invalid types ‘int[int]’ for array subscript
Afin que tu puisse travailler sous windows je t'invite très fortement :
1) soit à installer putty et à te connecter à un serveur linux :
https://www.chiark.greenend.org.uk/~sgtatham/putty/
2) soit à installer un environnement C++ comme dev-cpp ou code::blocks
http://www.bloodshed.net/
http://www.codeblocks.org/
3) soit à installer cygwin (pour avoir sous windows l'équivalent d'un linux). Tu peux en outre installer un compilateur (g++), et openssh (en particulier le client ssh) pour pouvoir te connecter en ssh sur un serveur linux si besoin
http://www.cygwin.com/
4) soit installer linux :-)
Bonne chance