Merge branch 'master' of https://git.etud.insa-toulouse.fr/nbillard/tsock_Abderrahman_Nathan
这个提交包含在:
当前提交
40a6fe5e27
共有 2 个文件被更改,包括 25 次插入 和 15 次删除
二进制
a.out
二进制
a.out
二进制文件未显示。
40
tsock_v0.c
40
tsock_v0.c
|
@ -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");
|
||||||
|
|
正在加载…
在新工单中引用