Etudes/BTS/C/Deuxieme annee/socketClient/socketBibli.c
2016-10-14 17:11:52 +02:00

105 lines
2.4 KiB
C

#include "socketBibli.h"
void mort(char *cituation)
{
printf("Erreur avec le dernier paquet recu, probleme %s : %s \n", cituation, strerror(errno));
}
int connection(struct sockaddr_in *infoServeur)
{
char IP[16];
int port;
int retourSocket;
printf("IP du serveur cible : ");
scanf("%s", &IP);
printf("Port du serveur cible : ");
scanf("%d", &port);
infoServeur->sin_addr.s_addr = inet_addr(IP);
infoServeur->sin_family = AF_INET;
infoServeur->sin_port = htons(port);
retourSocket = socket(PF_INET, SOCK_DGRAM, 0);
if(retourSocket==-1)
{
mort("socket");
}
return retourSocket;
}
void dialogueInt(int retourSocket, struct sockaddr_in *infoServeur)
{
int msg;
struct sockaddr_in infoServeurRetour;
int infoServeurRetourTaille;
while(1)
{
printf("Message (int) :");
scanf("%d", &msg);
if(sendto(retourSocket, &msg, sizeof(msg), 0, (struct sockaddr *)&infoServeur, sizeof(infoServeur)) == -1)
{
mort("sendto");
}
if(recvfrom(retourSocket, &msg, sizeof(msg), 0, (struct sockaddr *)&infoServeurRetour, &infoServeurRetourTaille) == -1)
{
mort("resvfrom");
}
}
}
void dialogueFloat(int retourSocket, struct sockaddr_in *infoServeur)
{
float msg;
struct sockaddr_in infoServeurRetour;
int infoServeurRetourTaille;
while(1)
{
printf("Message (float) :");
scanf("%f", &msg);
if(sendto(retourSocket, &msg, sizeof(msg), 0, (struct sockaddr *)&infoServeur, sizeof(infoServeur)) == -1)
{
mort("sendto");
}
if(recvfrom(retourSocket, &msg, sizeof(msg), 0, (struct sockaddr *)&infoServeurRetour, &infoServeurRetourTaille))
{
mort("resvfrom");
}
}
}
void dialogueChar(int retourSocket, struct sockaddr_in *infoServeur)
{
char msg[LONGCHAR];
struct sockaddr_in infoServeurRetour;
int infoServeurRetourTaille;
while(1)
{
printf("Message (float) :");
scanf("%s", &msg);
if(sendto(retourSocket, &msg, sizeof(msg), 0, (struct sockaddr *)&infoServeur, sizeof(infoServeur)) == -1)
{
mort("sendto");
}
if(recvfrom(retourSocket, &msg, sizeof(msg), 0, (struct sockaddr *)&infoServeurRetour, &infoServeurRetourTaille))
{
mort("resvfrom");
}
}
}