working send maybe

This commit is contained in:
nbillard 2023-02-07 15:07:42 +01:00
parent 952727251a
commit f0b339953d

View file

@ -5,7 +5,7 @@
#include <unistd.h> #include <unistd.h>
/* déclaration des types de base */ /* déclaration des types de base */
#include <sys/types.h> #include <sys/types.h>
/* constantes relatives aux domaines, types et protocoles */ /* constantes relatives aux domaines, types et tcps */
#include <sys/socket.h> #include <sys/socket.h>
/* constantes et structures propres au domaine UNIX */ /* constantes et structures propres au domaine UNIX */
#include <sys/un.h> #include <sys/un.h>
@ -77,14 +77,14 @@ int main (int argc, char **argv)
int nb_message = -1; /* Nb de messages à envoyer ou à recevoir, par défaut : 10 en émission, infini en réception */ int nb_message = -1; /* Nb de messages à envoyer ou à recevoir, par défaut : 10 en émission, infini en réception */
int source = -1 ; /* 0=puits, 1=source */ int source = -1 ; /* 0=puits, 1=source */
char* hostname; char* hostname;
int protocole = -1; /* 0=tcp, 1=udp */ int tcp = -1; /* 0=tcp, 1=udp */
int sock; int sock;
char* message; char* message;
struct hostent *hp; struct hostent *hp;
struct sockaddr_in addr_local; struct sockaddr_in addr_local;
struct sockaddr_in addr_distant; struct sockaddr_in addr_distant;
unsigned int addr_distant_len = sizeof(addr_distant); unsigned int addr_distant_len = sizeof(addr_distant);
while ((c = getopt(argc, argv, "ht:u:pn:s")) != -1) { while ((c = getopt(argc, argv, "hpst:u:n:")) != -1) {
switch (c) { switch (c) {
case 'h': case 'h':
usage(argv[0]); usage(argv[0]);
@ -112,32 +112,35 @@ int main (int argc, char **argv)
break; break;
case 'u': case 'u':
if (!protocole) { if (tcp == 1) {
usage(argv[0]); usage(argv[0]);
exit(1); exit(1);
} }
protocole = 1; tcp = 0;
hostname = optarg; hostname = optarg;
break; break;
case 't': case 't':
if (protocole) { if (tcp == 0) {
usage(argv[0]); usage(argv[0]);
exit(1); exit(1);
} }
protocole = 0; tcp = 1;
hostname = optarg; hostname = optarg;
break;
default: default:
usage(argv[0]); usage(argv[0]);
exit(1);
/* printf("usage: cmd [-p|-s][-n ##]\n"); */ /* printf("usage: cmd [-p|-s][-n ##]\n"); */
break; break;
} }
} }
if (protocole == -1) { if (tcp == -1) {
protocole = 1; tcp = 1;
} }
if (source == -1) { if (source == -1) {
printf("outside\n");
usage(argv[0]); usage(argv[0]);
/* printf("usage: cmd [-p|-s][-n ##]\n"); */ /* printf("usage: cmd [-p|-s][-n ##]\n"); */
exit(1) ; exit(1) ;
@ -163,7 +166,7 @@ int main (int argc, char **argv)
} }
} }
if (protocole) /* udp */ { if (tcp) /* udp */ {
sock = socket(AF_INET, SOCK_DGRAM, 0); sock = socket(AF_INET, SOCK_DGRAM, 0);
} else { } else {
sock = socket(AF_INET, SOCK_STREAM, 0); sock = socket(AF_INET, SOCK_STREAM, 0);
@ -188,7 +191,8 @@ int main (int argc, char **argv)
printf("socket bound\n"); printf("socket bound\n");
if (!protocole) /* if udp activated */ { if (!tcp) /* if udp activated */ {
printf("pas tcp\n");
memset(&addr_distant, 0, sizeof(addr_local)); memset(&addr_distant, 0, sizeof(addr_local));
addr_distant.sin_family = AF_INET; addr_distant.sin_family = AF_INET;
addr_distant.sin_port = DEFAULTPORT; addr_distant.sin_port = DEFAULTPORT;
@ -239,18 +243,16 @@ int main (int argc, char **argv)
message = malloc((MSG_LENGTH + 1) * sizeof(char)); message = malloc((MSG_LENGTH + 1) * sizeof(char));
if (protocole) /* tcp activated */ { if (tcp) /* tcp activated */ {
if (source) { if (source) {
printf("nb de tampons a envoyer : %d\n", nb_message);
for(int i=0;i<nb_message;i++) { for(int i=0;i<nb_message;i++) {
construire_message(message, (char)((i%26)+97), MSG_LENGTH); construire_message(message, (char)((i%26)+97), MSG_LENGTH);
printf("sending message: \n");
afficher_message(message, MSG_LENGTH); afficher_message(message, MSG_LENGTH);
printf("\t\tsending message: \n");
send(sock, message, MSG_LENGTH, 0); send(sock, message, MSG_LENGTH, 0);
} }
if (close(sock)==-1) { if (shutdown(sock, SHUT_RDWR)==-1) {
perror("echec de destruction du socket: \n"); perror("echec de destruction du socket: \n");
} }
} else /*puit */ { } else /*puit */ {