1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
#define MOBI_DATA_PORT_IP 1234
#define MOBI_CONTROL_PORT_IP 4321
/* Creation de l'écoute pour le serveur */
int creation_connexion_ecoute(int type) {
int sock;
struct sockaddr_in adresse_locale;
//Creation de l'adresse d'ecoute
memset(&adresse_locale, 0, sizeof (struct sockaddr_in));
printf("ccreation connexion :\n");
if (type == DATA_TYPE)
adresse_locale.sin_port = htons(MOBI_DATA_PORT_IP);
else if (type == CONTROL_TYPE)
adresse_locale.sin_port = htons(MOBI_CONTROL_PORT_IP);
else
adresse_locale.sin_port = htons(type);
adresse_locale.sin_family = AF_INET;
adresse_locale.sin_addr.s_addr = htonl(INADDR_ANY);
//Creation du socket d'ecoute
if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) == -1) {
printf("Erreur de creation du socket ip\n");
return -1;
}
if (bind(sock, (struct sockaddr *) &adresse_locale, sizeof (struct sockaddr_in)) < 0) {
printf("Erreur de bind ip\n");
return -2;
}
printf("bind ok\n");
return sock;
}
/* Creation de la connection pour le client */
int creation_connexion_client(void* adresse_serveur) {
int sock;
if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) == -1) {
perror("Creation socket ip serveur");
return -1;
}
((struct sockaddr_in*)adresse_serveur)->sin_port = MOBI_DATA_PORT_IP;
return sock;
}
/* Ecriture pour le client */
int ecrire(int sock, void* buff, int buflen, void* adresse) {
struct sockaddr_in adresseDest={0};
printf("adresse dest : %s\n", addr2str(adresse));
if(((struct sockaddr_in*)adresse)->sin_family==AF_INET)
printf("AF_INET\n");
printf("port : %d\n",((struct sockaddr_in*)adresse)->sin_port);// ici le port c'est bien 1234
adresseDest.sin_family = ((struct sockaddr_in*)adresse)->sin_family;
adresseDest.sin_port = ((struct sockaddr_in*)adresse)->sin_port;
adresseDest.sin_addr.s_addr = ((struct sockaddr_in*)adresse)->sin_addr.s_addr;
return sendto(sock, buff, buflen, 0, (struct sockaddr*) &adresseDest, sizeof (struct sockaddr_in));
}
/* lecture pour le serveur */
int lire(int sock, void* buff, int buflen, void* adresse, int* taille) {
return recvfrom(sock, buff, buflen, 0, (struct sockaddr *) adresse, taille);
} |
Partager