112 lines
2.4 KiB
C
112 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 demarrage()
|
|
{
|
|
struct sockaddr_in infoServer;
|
|
int retourSocket;
|
|
int port;
|
|
|
|
printf("Port sur lequel vous voulez lancer le serveur :");
|
|
scanf("%d", &port);
|
|
|
|
infoServer.sin_family = AF_INET;
|
|
infoServer.sin_addr.s_addr = htonl(INADDR_ANY);
|
|
infoServer.sin_port = htons(port);
|
|
|
|
retourSocket = socket(AF_INET, SOCK_DGRAM, 0);
|
|
|
|
if(retourSocket == -1)
|
|
{
|
|
mort("demarrage socket");
|
|
}
|
|
|
|
if(bind(retourSocket, (struct sockaddr *)&infoServer, sizeof(infoServer)) == -1)
|
|
{
|
|
mort("bind");
|
|
}
|
|
|
|
return retourSocket;
|
|
|
|
}
|
|
|
|
void dialogueInt(int socket)
|
|
{
|
|
struct sockaddr_in infoClient;
|
|
int infoClientTaille;
|
|
int retourMsg;
|
|
int retourSendTo;
|
|
|
|
while(1)
|
|
{
|
|
if(recvfrom(socket, &retourMsg, sizeof(retourMsg), 0, (struct sockaddr *)&infoClient, &infoClientTaille) == -1)
|
|
{
|
|
mort("recvfrom");
|
|
exit(errno);
|
|
}
|
|
|
|
printf("%d\n", retourMsg);
|
|
|
|
if(sendto(socket, &retourMsg, sizeof(retourMsg), 0, (struct sockaddr *)&infoClient, sizeof(infoClient))==-1)
|
|
{
|
|
mort("sendto");
|
|
exit(errno);
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
void dialogueFloat(int socket)
|
|
{
|
|
struct sockaddr_in infoClient;
|
|
int infoClientTaille;
|
|
float retourMsg;
|
|
|
|
while(1)
|
|
{
|
|
if(recvfrom(socket, &retourMsg, sizeof(retourMsg), 0, (struct sockaddr *)&infoClient, &infoClientTaille) == -1)
|
|
{
|
|
mort("recvfrom");
|
|
exit(errno);
|
|
}
|
|
|
|
printf("%f\n", retourMsg);
|
|
|
|
if(sendto(socket, &retourMsg, sizeof(retourMsg), 0, (struct sockaddr *)&infoClient, sizeof(infoClient))==-1)
|
|
{
|
|
mort("sendto");
|
|
exit(errno);
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
void dialogueChar(int socket)
|
|
{
|
|
struct sockaddr_in infoClient;
|
|
int infoClientTaille;
|
|
char retourMsg[CHARLEN];
|
|
int retourSendTo;
|
|
|
|
while(1)
|
|
{
|
|
if(recvfrom(socket, &retourMsg, sizeof(retourMsg), 0, (struct sockaddr *)&infoClient, &infoClientTaille) == -1)
|
|
{
|
|
mort("recvfrom");
|
|
}
|
|
|
|
printf("%s\n", retourMsg);
|
|
|
|
if(sendto(socket, &retourMsg, sizeof(retourMsg), 0, (struct sockaddr *)&infoClient, sizeof(infoClient))==-1)
|
|
{
|
|
mort("sendto");
|
|
}
|
|
|
|
}
|
|
}
|