ajout de TCP

This commit is contained in:
Yohan Boujon 2023-01-13 12:35:09 +01:00
parent ce8b44f3b4
commit d272f9c5ad
5 changed files with 54 additions and 13 deletions

View file

@ -2,7 +2,7 @@
#define HEADER_PUIT #define HEADER_PUIT
#include "tsock.h" #include "tsock.h"
int launchPuit(int nombreMessage,int TailleMessage,int isTCP); int launchPuit(int nombreMessage,int tailleMessage,int isTCP);
int receiveMultipleData(int nombreMessages, int tailleMessage, int sock, struct sockaddr_in socketStruct); int receiveMultipleData(int nombreMessages, int tailleMessage, int sock, struct sockaddr_in socketStruct);
int exitMax(int var,int tailleMax); int exitMax(int var,int tailleMax);
#endif #endif

View file

@ -2,7 +2,7 @@
#define HEADER_SOURCE #define HEADER_SOURCE
#include "tsock.h" #include "tsock.h"
int launchSource(int nombreMessage, int isTCP); int launchSource(int nombreMessage,int tailleMessage,int isTCP);
int sendMultipleData(int nombreMessages, int tailleMessage, int sock, struct sockaddr_in socketStruct); int sendMultipleData(int nombreMessages, int tailleMessage, int sock, struct sockaddr_in socketStruct);
#endif #endif

View file

@ -9,7 +9,7 @@ int main (int argc, char **argv)
extern char *optarg; extern char *optarg;
extern int optind; extern int optind;
int source = -1, nb_message = -1, c, tcp=1, port=9000, tailleMessage; /* Nb de messages à envoyer ou à recevoir, par défaut : 10 en émission, infini en réception */ int source = -1, nb_message = -1, c, tcp=1, port=9000, tailleMessage; /* Nb de messages à envoyer ou à recevoir, par défaut : 10 en émission, infini en réception */
while ((c = getopt(argc, argv, "pn:su")) != -1) { while ((c = getopt(argc, argv, "pn:sul:")) != -1) {
switch (c) { switch (c) {
case 'p': case 'p':
if (source != -1) { if (source != -1) {
@ -53,7 +53,7 @@ int main (int argc, char **argv)
if(source) if(source)
{ {
//printf("Source : %d\n",nb_message); //printf("Source : %d\n",nb_message);
launchSource(nb_message,tcp); launchSource(nb_message,tailleMessage,tcp);
} }
else else
{ {

View file

@ -2,21 +2,43 @@
int launchPuit(int nombreMessage,int tailleMessage,int isTCP) int launchPuit(int nombreMessage,int tailleMessage,int isTCP)
{ {
int sock; int sock,socketType;
struct sockaddr_in socketPuit; struct sockaddr_in socketPuit;
if(isTCP)
{
socketType=SOCK_STREAM;
}
else
{
socketType=SOCK_DGRAM;
}
if((sock=socket(AF_INET,SOCK_DGRAM,0)) == -1) if((sock=socket(AF_INET,socketType,0)) == -1)
{ {
perror("[tsock] : fonction socket() : echec creation du socket\n"); perror("[tsock] : fonction socket() : echec creation du socket\n");
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
initStructSocket(&socketPuit,0); initStructSocket(&socketPuit,0);
if (bind(sock, (const struct sockaddr *)&socketPuit, sizeof(socketPuit)) < 0 ) if (bind(sock, (struct sockaddr *)&socketPuit, sizeof(socketPuit)) < 0 )
{ {
perror("[tsock] : fonction bind() : echec du lien avec socket serveur.\n"); perror("[tsock] : fonction bind() : echec du lien avec socket serveur.\n");
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
receiveMultipleData(nombreMessage,tailleMessage,sock,socketPuit); if(isTCP)
{
unsigned int longueurRecu = sizeof(socketPuit);
char messageRecu[30];
listen(sock,10);
int acceptValue = accept(sock,(struct sockaddr *)&socketPuit,&longueurRecu);
printf("AcceptValue = %d\n",acceptValue);
int tailleMessageRecu = read(acceptValue,messageRecu,sizeof(messageRecu));
messageRecu[tailleMessageRecu]='\0';
printf("Message TCP [%d] : %s\n",tailleMessageRecu,messageRecu);
}
else
{
receiveMultipleData(nombreMessage,tailleMessage,sock,socketPuit);
}
close(sock); close(sock);
return 0; return 0;
} }

View file

@ -1,17 +1,35 @@
#include "../header/source.h" #include "../header/source.h"
int launchSource(int nombreMessage, int isTCP) int launchSource(int nombreMessage,int tailleMessage,int isTCP)
{ {
int sock; int sock,socketType;
struct sockaddr_in socketSource; struct sockaddr_in socketSource;
if(isTCP)
{
socketType=SOCK_STREAM;
}
else
{
socketType=SOCK_DGRAM;
}
if((sock=socket(AF_INET,SOCK_DGRAM,0)) == -1) if((sock=socket(AF_INET,socketType,0)) == -1)
{ {
perror("[tsock] : fonction socket() : echec creation du socket\n"); perror("[tsock] : fonction socket() : echec creation du socket\n");
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
initStructSocket(&socketSource,1); initStructSocket(&socketSource,1);
sendMultipleData(nombreMessage,30,sock,socketSource); if(isTCP)
{
connect(sock,(struct sockaddr *)&socketSource,(socklen_t)sizeof(socketSource));
printf("Connect successful\n");
int isWritten = write(sock,"aaaaaa",sizeof("aaaaaa"));
printf("on écrit : %d\n",isWritten);
}
else
{
sendMultipleData(nombreMessage,tailleMessage,sock,socketSource);
}
close(sock); close(sock);
return 0; return 0;
} }
@ -23,8 +41,9 @@ int sendMultipleData(int nombreMessages, int tailleMessage, int sock, struct soc
char sendingMessage[tailleMessage]; char sendingMessage[tailleMessage];
for(int i=0;i<nombreMessages;i++) for(int i=0;i<nombreMessages;i++)
{ {
memset(sendingMessage, messageChar, tailleMessage*sizeof(char)); memset(sendingMessage, messageChar, tailleMessage*sizeof(char)+1);
longueurEmis=sendto(sock, sendingMessage, tailleMessage, 0, (struct sockaddr*)&socketStruct, sizeof(socketStruct)); longueurEmis=sendto(sock, sendingMessage, tailleMessage, 0, (struct sockaddr*)&socketStruct, sizeof(socketStruct));
sendingMessage[tailleMessage]='\0';
printf("Source\tEnvoi n°%d (%d) :\t[%s]\n",i+1,longueurEmis,sendingMessage); printf("Source\tEnvoi n°%d (%d) :\t[%s]\n",i+1,longueurEmis,sendingMessage);
messageChar++; messageChar++;
} }