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
#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 exitMax(int var,int tailleMax);
#endif

View file

@ -2,7 +2,7 @@
#define HEADER_SOURCE
#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);
#endif

View file

@ -9,7 +9,7 @@ int main (int argc, char **argv)
extern char *optarg;
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 */
while ((c = getopt(argc, argv, "pn:su")) != -1) {
while ((c = getopt(argc, argv, "pn:sul:")) != -1) {
switch (c) {
case 'p':
if (source != -1) {
@ -53,7 +53,7 @@ int main (int argc, char **argv)
if(source)
{
//printf("Source : %d\n",nb_message);
launchSource(nb_message,tcp);
launchSource(nb_message,tailleMessage,tcp);
}
else
{

View file

@ -2,21 +2,43 @@
int launchPuit(int nombreMessage,int tailleMessage,int isTCP)
{
int sock;
int sock,socketType;
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");
exit(EXIT_FAILURE);
}
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");
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);
return 0;
}

View file

@ -1,17 +1,35 @@
#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;
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");
exit(EXIT_FAILURE);
}
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);
return 0;
}
@ -23,8 +41,9 @@ int sendMultipleData(int nombreMessages, int tailleMessage, int sock, struct soc
char sendingMessage[tailleMessage];
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));
sendingMessage[tailleMessage]='\0';
printf("Source\tEnvoi n°%d (%d) :\t[%s]\n",i+1,longueurEmis,sendingMessage);
messageChar++;
}