Pg serveur tcp sur linux
Fermé
tacha84
-
17 janv. 2008 à 22:50
mamiemando Messages postés 32298 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 mars 2023 - 18 janv. 2008 à 00:07
mamiemando Messages postés 32298 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 mars 2023 - 18 janv. 2008 à 00:07
A voir également:
- Pg serveur tcp sur linux
- Tcp optimizer - Télécharger - Optimisation
- Udp vs tcp - Guide
- Association avec le serveur freebox en cours ✓ - Forum Freebox
- Pg ✓ - Forum Messagerie
- Émulateur linux ✓ - Forum Linux / Unix
1 réponse
mamiemando
Messages postés
32298
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
23 mars 2023
7 575
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