这个提交包含在:
Abderrahman El-Ouali 2023-02-07 13:31:09 +02:00
当前提交 40a6fe5e27
共有 2 个文件被更改,包括 25 次插入15 次删除

二进制
a.out

二进制文件未显示。

查看文件

@ -41,6 +41,9 @@ void recvudp(int sock, char* buffer, int buf_len, void* addr, unsigned int addr_
} else if (lg_recv < buf_len) { } else if (lg_recv < buf_len) {
fprintf(stderr, "Only %i from %i characters have been reviewed.", lg_recv, buf_len); fprintf(stderr, "Only %i from %i characters have been reviewed.", lg_recv, buf_len);
exit(1); exit(1);
} else {
buffer[lg_recv] = '\0';
printf("message revieved: %s\n", buffer);
} }
} }
@ -73,7 +76,8 @@ int main (int argc, char **argv)
int sock; int sock;
char* message; char* message;
struct hostent *hp; struct hostent *hp;
struct sockaddr_in addr; struct sockaddr_in addr_local;
struct sockaddr_in addr_distant;
while ((c = getopt(argc, argv, "hu:pn:s")) != -1) { while ((c = getopt(argc, argv, "hu:pn:s")) != -1) {
switch (c) { switch (c) {
case 'h': case 'h':
@ -161,9 +165,21 @@ int main (int argc, char **argv)
printf("socket created\n"); printf("socket created\n");
memset(&addr, 0, sizeof(addr)); memset(&addr_local, 0, sizeof(addr_local));
addr.sin_family = AF_INET; addr_local.sin_family = AF_INET;
addr.sin_port = DEFAULTPORT; addr_local.sin_port = DEFAULTPORT;
addr_local.sin_addr.s_addr = INADDR_ANY;
printf("address built\n");
if (bind(sock, (struct sockaddr*) &addr_local, (sizeof(addr_local))) < 0 ) {
perror("Error while binding socket: ");
exit(1);
}
memset(&addr_distant, 0, sizeof(addr_local));
addr_distant.sin_family = AF_INET;
addr_distant.sin_port = DEFAULTPORT;
printf("%s\n", hostname); printf("%s\n", hostname);
hp = gethostbyname(hostname); hp = gethostbyname(hostname);
if (hp == NULL) { if (hp == NULL) {
@ -173,13 +189,7 @@ int main (int argc, char **argv)
} }
printf("hostname found\n"); printf("hostname found\n");
memcpy(&addr.sin_addr.s_addr, hp->h_addr, hp->h_length); memcpy(&addr_distant.sin_addr.s_addr, hp->h_addr, hp->h_length);
printf("address built\n");
if (bind(sock, (struct sockaddr*) &addr, (sizeof(addr))) < 0 ) {
perror("Error while binding socket: ");
exit(1);
}
printf("socket bound\n"); printf("socket bound\n");
@ -188,22 +198,22 @@ int main (int argc, char **argv)
construire_message(message, 'a', MSG_LENGTH); construire_message(message, 'a', MSG_LENGTH);
if (nb_message < 0) { if (nb_message < 0) {
while (1) { while (1) {
sendudp(sock, message, MSG_LENGTH, &addr, sizeof(addr)); sendudp(sock, message, MSG_LENGTH, &addr_distant, sizeof(addr_distant));
} }
} else { } else {
for (int i = 0; i < nb_message; ++i) { for (int i = 0; i < nb_message; ++i) {
sendudp(sock, message, MSG_LENGTH, &addr, sizeof(addr)); sendudp(sock, message, MSG_LENGTH, &addr_distant, sizeof(addr_distant));
} }
} }
} else { } else {
if (nb_message < 0) { if (nb_message < 0) {
while (1) { while (1) {
recvudp(sock, message, MSG_LENGTH, &addr, sizeof(addr)); recvudp(sock, message, MSG_LENGTH, &addr_distant, sizeof(addr_distant));
} }
} else { } else {
for (int i = 0; i < nb_message; ++i) { for (int i = 0; i < nb_message; ++i) {
recvudp(sock, message, MSG_LENGTH, &addr, sizeof(addr)); recvudp(sock, message, MSG_LENGTH, &addr_distant, sizeof(addr_distant));
} }
} }
printf("puit not implemented\n"); printf("puit not implemented\n");