summaryrefslogtreecommitdiff
path: root/sem_6
diff options
context:
space:
mode:
authorGaspard Coulet <gaspard.coulet@mines-ales.org>2021-04-28 23:05:53 +0200
committerGaspard Coulet <gaspard.coulet@mines-ales.org>2021-04-28 23:05:53 +0200
commit9fe033ea88c2f705ec18c232873d056e0c229d72 (patch)
tree0647dc8c51610c7336c88c04de2068ea14b21e17 /sem_6
Initial commit
Diffstat (limited to 'sem_6')
-rw-r--r--sem_6/.gitkeep0
-rw-r--r--sem_6/HLIN603/TP1/CompteBancaire.cpp15
-rw-r--r--sem_6/HLIN603/TP1/CompteBancaire.h16
-rw-r--r--sem_6/HLIN603/TP1/CompteDepot.cpp15
-rw-r--r--sem_6/HLIN603/TP1/CompteDepot.h14
-rw-r--r--sem_6/HLIN603/TP1/CompteDepotRemunere.cpp15
-rw-r--r--sem_6/HLIN603/TP1/CompteDepotRemunere.h16
-rw-r--r--sem_6/HLIN603/TP1/CompteDepotRemunereCB.cpp15
-rw-r--r--sem_6/HLIN603/TP1/CompteDepotRemunereCB.h16
-rw-r--r--sem_6/HLIN603/TP1/CompteRemunere.cpp15
-rw-r--r--sem_6/HLIN603/TP1/CompteRemunere.h15
-rw-r--r--sem_6/HLIN603/TP1/CompteRemunereAvecCB.cpp17
-rw-r--r--sem_6/HLIN603/TP1/CompteRemunereAvecCB.h15
-rw-r--r--sem_6/HLIN603/TP1/Prog.cpp39
-rw-r--r--sem_6/HLIN603/TP1/a.outbin0 -> 25919 bytes
-rw-r--r--sem_6/HLIN603/TP3/prog.cpp9
-rw-r--r--sem_6/HLIN603/ocaml/TP2/ex1.caml18
-rw-r--r--sem_6/HLIN603/ocaml/TP2/ex2.caml21
-rw-r--r--sem_6/HLIN603/ocaml/TP2/test.caml21
-rw-r--r--sem_6/HLIN611/.gitkeep0
-rw-r--r--sem_6/HLIN611/Chap_4/TD29
-rw-r--r--sem_6/HLIN611/TCP/a.outbin0 -> 9149 bytes
-rw-r--r--sem_6/HLIN611/TCP/prog.c61
-rw-r--r--sem_6/HLIN611/TD/TCP.txt19
-rw-r--r--sem_6/HLIN611/TP_TCP_P2/prog.c51
-rw-r--r--sem_6/HLIN611/a.outbin0 -> 9053 bytes
-rw-r--r--sem_6/HLIN611/td1.md14
-rw-r--r--sem_6/HLIN611/tp1.c72
-rw-r--r--sem_6/Sans nom 1.odsbin0 -> 22662 bytes
29 files changed, 538 insertions, 0 deletions
diff --git a/sem_6/.gitkeep b/sem_6/.gitkeep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/sem_6/.gitkeep
diff --git a/sem_6/HLIN603/TP1/CompteBancaire.cpp b/sem_6/HLIN603/TP1/CompteBancaire.cpp
new file mode 100644
index 0000000..486b74f
--- /dev/null
+++ b/sem_6/HLIN603/TP1/CompteBancaire.cpp
@@ -0,0 +1,15 @@
+#include<cstdlib>
+#include<iostream>
+#include"CompteBancaire.h"
+
+CompteBancaire::CompteBancaire(){}
+CompteBancaire::~CompteBancaire(){
+ std::cout<<"Destru Compte Bancaire"<<std::endl;
+ std::cout<<"Argent à rendre : "<<solde<<std::endl;
+}
+CompteBancaire::CompteBancaire(float v): solde(v){
+ std::cout<<"Constru Compte Bancaire"<<std::endl;
+};
+void CompteBancaire::deposer(float v){
+ solde += v;
+}
diff --git a/sem_6/HLIN603/TP1/CompteBancaire.h b/sem_6/HLIN603/TP1/CompteBancaire.h
new file mode 100644
index 0000000..ee525b2
--- /dev/null
+++ b/sem_6/HLIN603/TP1/CompteBancaire.h
@@ -0,0 +1,16 @@
+#ifndef _CB_H
+#define _CB_H
+#include<cstdlib>
+#include<iostream>
+
+class CompteBancaire
+{
+ protected :
+ float solde;
+ public :
+ CompteBancaire(float v);
+ CompteBancaire();
+ virtual ~CompteBancaire();
+ virtual void deposer(float v);
+};
+#endif
diff --git a/sem_6/HLIN603/TP1/CompteDepot.cpp b/sem_6/HLIN603/TP1/CompteDepot.cpp
new file mode 100644
index 0000000..afbcb88
--- /dev/null
+++ b/sem_6/HLIN603/TP1/CompteDepot.cpp
@@ -0,0 +1,15 @@
+#include<cstdlib>
+#include<iostream>
+#include"CompteDepot.h"
+CompteDepot::CompteDepot(){}
+CompteDepot::~CompteDepot(){
+ std::cout<<"Destru Compte Depot"<<std::endl;
+ solde-=100;
+}
+CompteDepot::CompteDepot(float v) : CompteBancaire(v){
+ std::cout<<"Constru Compte Depot"<<std::endl;
+};
+void CompteDepot::deposer(float v){
+ float w = v>1000? v + 9 : v - 1;
+ CompteBancaire::deposer(w);
+}
diff --git a/sem_6/HLIN603/TP1/CompteDepot.h b/sem_6/HLIN603/TP1/CompteDepot.h
new file mode 100644
index 0000000..7016746
--- /dev/null
+++ b/sem_6/HLIN603/TP1/CompteDepot.h
@@ -0,0 +1,14 @@
+#ifndef _CD_H
+#define _CD_H
+#include<cstdlib>
+#include<iostream>
+#include"./CompteBancaire.h"
+class CompteDepot : virtual public CompteBancaire
+{
+ public :
+ CompteDepot(float v);
+ CompteDepot();
+ virtual ~CompteDepot();
+ virtual void deposer(float);
+};
+#endif
diff --git a/sem_6/HLIN603/TP1/CompteDepotRemunere.cpp b/sem_6/HLIN603/TP1/CompteDepotRemunere.cpp
new file mode 100644
index 0000000..2e12d17
--- /dev/null
+++ b/sem_6/HLIN603/TP1/CompteDepotRemunere.cpp
@@ -0,0 +1,15 @@
+#include<cstdlib>
+#include<iostream>
+#include"CompteDepotRemunere.h"
+
+CompteDepotRemunere::CompteDepotRemunere(){}
+CompteDepotRemunere::~CompteDepotRemunere(){
+ std::cout<<"Destru Compte Depot Remu"<<std::endl;
+}
+CompteDepotRemunere::CompteDepotRemunere(float v ) : CompteDepot(v){
+ std::cout<<"Constru Compte Depot Remunere"<<std::endl;
+};
+void CompteDepotRemunere::deposer(float v){
+ CompteRemunere::deposer(v);
+ CompteDepot::deposer(0);
+}
diff --git a/sem_6/HLIN603/TP1/CompteDepotRemunere.h b/sem_6/HLIN603/TP1/CompteDepotRemunere.h
new file mode 100644
index 0000000..0b81395
--- /dev/null
+++ b/sem_6/HLIN603/TP1/CompteDepotRemunere.h
@@ -0,0 +1,16 @@
+#ifndef _CDR_H
+#define _CDR_H
+#include<cstdlib>
+#include<iostream>
+#include"./CompteRemunere.h"
+#include"./CompteDepot.h"
+
+class CompteDepotRemunere : public CompteRemunere,public CompteDepot
+{
+ public :
+ CompteDepotRemunere(float v);
+ CompteDepotRemunere();
+ virtual ~CompteDepotRemunere();
+ virtual void deposer(float);
+};
+#endif
diff --git a/sem_6/HLIN603/TP1/CompteDepotRemunereCB.cpp b/sem_6/HLIN603/TP1/CompteDepotRemunereCB.cpp
new file mode 100644
index 0000000..1c7c872
--- /dev/null
+++ b/sem_6/HLIN603/TP1/CompteDepotRemunereCB.cpp
@@ -0,0 +1,15 @@
+#include<cstdlib>
+#include<iostream>
+#include"CompteDepotRemunereCB.h"
+
+CompteDepotRemunereCB::CompteDepotRemunereCB(){}
+CompteDepotRemunereCB::~CompteDepotRemunereCB(){
+ std::cout<<"Destru Compte Depot Remu CB"<<std::endl;
+}
+CompteDepotRemunereCB::CompteDepotRemunereCB(float v ) : CompteDepot(v){
+ std::cout<<"Constru Compte Depot Remunere CB"<<std::endl;
+};
+void CompteDepotRemunereCB::deposer(float v){
+ CompteRemunere::deposer(v);
+ CompteDepot::deposer(0);
+}
diff --git a/sem_6/HLIN603/TP1/CompteDepotRemunereCB.h b/sem_6/HLIN603/TP1/CompteDepotRemunereCB.h
new file mode 100644
index 0000000..f4f1179
--- /dev/null
+++ b/sem_6/HLIN603/TP1/CompteDepotRemunereCB.h
@@ -0,0 +1,16 @@
+#ifndef _CDR_H
+#define _CDR_H
+#include<cstdlib>
+#include<iostream>
+#include"./CompteRemunere.h"
+#include"./CompteDepot.h"
+
+class CompteDepotRemunereCB : public CompteDepotRemunere,public CompteDepotAvecCB
+{
+ public :
+ CompteDepotRemunere(float v);
+ CompteDepotRemunere();
+ virtual ~CompteDepotRemunere();
+ virtual void deposer(float);
+};
+#endif
diff --git a/sem_6/HLIN603/TP1/CompteRemunere.cpp b/sem_6/HLIN603/TP1/CompteRemunere.cpp
new file mode 100644
index 0000000..fc409fb
--- /dev/null
+++ b/sem_6/HLIN603/TP1/CompteRemunere.cpp
@@ -0,0 +1,15 @@
+#include<cstdlib>
+#include<iostream>
+#include"CompteRemunere.h"
+CompteRemunere::CompteRemunere(){}
+CompteRemunere::~CompteRemunere(){
+ std::cout<<"Destru Compte Remu"<<std::endl;
+ solde+=0.1*solde;
+}
+CompteRemunere::CompteRemunere(float v ) : CompteBancaire(v){
+ std::cout<<"Constru Compte Remunere"<<std::endl;
+};
+void CompteRemunere::deposer(float v){
+ float w = 1.01*v;
+ CompteBancaire::deposer(w);
+}
diff --git a/sem_6/HLIN603/TP1/CompteRemunere.h b/sem_6/HLIN603/TP1/CompteRemunere.h
new file mode 100644
index 0000000..cb22d1e
--- /dev/null
+++ b/sem_6/HLIN603/TP1/CompteRemunere.h
@@ -0,0 +1,15 @@
+#ifndef _CR_H
+#define _CR_H
+#include<cstdlib>
+#include<iostream>
+#include"./CompteBancaire.h"
+
+class CompteRemunere : virtual public CompteBancaire
+{
+ public :
+ CompteRemunere(float v);
+ CompteRemunere();
+ virtual ~CompteRemunere();
+ virtual void deposer(float);
+};
+#endif
diff --git a/sem_6/HLIN603/TP1/CompteRemunereAvecCB.cpp b/sem_6/HLIN603/TP1/CompteRemunereAvecCB.cpp
new file mode 100644
index 0000000..d8b1186
--- /dev/null
+++ b/sem_6/HLIN603/TP1/CompteRemunereAvecCB.cpp
@@ -0,0 +1,17 @@
+#include<cstdlib>
+#include<iostream>
+#include"CompteRemunere.h"
+
+CompteRemunereAvecCB::CompteRemunereAvecCB(){
+}
+CompteRemunereAvecCB::~CompteRemunereAvecCB(){
+ std::cout<<"Destru Compte Remu CB"<<std::endl;
+ solde -= 5;
+}
+CompteRemunereAvecCB::CompteRemunereAvecCB(float v ) : CompteRemunere(v){
+ std::cout<<"Constru Compte Remunere CB"<<std::endl;
+};
+float CompteRemunereAvecCB::deposer(float v){
+ CompteRemunere::deposer(v);
+ return solde;
+}
diff --git a/sem_6/HLIN603/TP1/CompteRemunereAvecCB.h b/sem_6/HLIN603/TP1/CompteRemunereAvecCB.h
new file mode 100644
index 0000000..995fb39
--- /dev/null
+++ b/sem_6/HLIN603/TP1/CompteRemunereAvecCB.h
@@ -0,0 +1,15 @@
+#ifndef _CR_H
+#define _CR_H
+#include<cstdlib>
+#include<iostream>
+#include"./CompteBancaire.h"
+
+class CompteRemunereAvecCB : public CompteRemunere
+{
+ public :
+ CompteRemunereAvecCB(float v);
+ CompteRemunereAvecCB();
+ virtual ~CompteRemunereAvecCB();
+ virtual void deposer(float);
+};
+#endif
diff --git a/sem_6/HLIN603/TP1/Prog.cpp b/sem_6/HLIN603/TP1/Prog.cpp
new file mode 100644
index 0000000..d4bbc36
--- /dev/null
+++ b/sem_6/HLIN603/TP1/Prog.cpp
@@ -0,0 +1,39 @@
+#include<cstdlib>
+#include<iostream>
+#include"CompteDepot.h"
+#include"CompteBancaire.h"
+#include"CompteRemunere.h"
+#include"CompteDepotRemunere.h"
+#include<time.h>
+int main(int argc, char ** argv){
+ srand(time(NULL));
+ CompteBancaire * vp[atoi(argv[1])];
+ for (int i = 0 ; i < atoi(argv[1]); i ++){
+ if (i % 2 == 1){
+ std::cout<<"Avec COmpte Depot"<<std::endl;
+ vp[i]= new CompteDepot(rand()%2000+1);
+ }
+ else {
+ std::cout<<"Avec COmpte Depot Remunere"<<std::endl;
+ vp[i]= new CompteDepotRemunere(rand()%2000+1);
+ }
+ }
+ for (int i =0; i < atoi(argv[1]); i ++){
+ delete vp[i];
+ }
+ // float Argent = (float) atoi(argv[1]);
+ // std::cout<<"Avec Compte Bancaire"<<std::endl;
+ // CompteBancaire * cb = new CompteBancaire(Argent);
+ // cb->deposer(Argent);
+ // delete cb;
+ // std::cout<<"Avec Compte Depot"<<std::endl;
+ // cb = new CompteDepot(Argent);
+ // cb->deposer(Argent);
+ // delete cb;
+ // std::cout<<"Avec Compte Remunere"<<std::endl;
+ // cb = new CompteRemunere(Argent);
+ // cb->deposer(Argent);
+ // delete cb;
+
+ return 0;
+}
diff --git a/sem_6/HLIN603/TP1/a.out b/sem_6/HLIN603/TP1/a.out
new file mode 100644
index 0000000..38df8c4
--- /dev/null
+++ b/sem_6/HLIN603/TP1/a.out
Binary files differ
diff --git a/sem_6/HLIN603/TP3/prog.cpp b/sem_6/HLIN603/TP3/prog.cpp
new file mode 100644
index 0000000..4557755
--- /dev/null
+++ b/sem_6/HLIN603/TP3/prog.cpp
@@ -0,0 +1,9 @@
+#include<cstdlib>
+#include<iostream>
+#include<time.h>
+
+int main(int argc, char ** argv){
+
+
+ return 0;
+}
diff --git a/sem_6/HLIN603/ocaml/TP2/ex1.caml b/sem_6/HLIN603/ocaml/TP2/ex1.caml
new file mode 100644
index 0000000..ab3237a
--- /dev/null
+++ b/sem_6/HLIN603/ocaml/TP2/ex1.caml
@@ -0,0 +1,18 @@
+class min ( xi : int ) =
+object ( self )
+ val mutable x = xi
+ method get = x
+ method set n = x <- n
+ method min y = if self#get < y then self#get else y
+end;;
+class min_zero xi =
+object
+ inherit min xi
+ method get = 0
+end;;
+let o1 = new min 4;;
+let o2 = new min_zero 0;;
+o1#min 2;;
+o1#min 7;;
+o2#min 2;;
+o2#min (-2);;
diff --git a/sem_6/HLIN603/ocaml/TP2/ex2.caml b/sem_6/HLIN603/ocaml/TP2/ex2.caml
new file mode 100644
index 0000000..21779af
--- /dev/null
+++ b/sem_6/HLIN603/ocaml/TP2/ex2.caml
@@ -0,0 +1,21 @@
+class account b =
+object (self)
+ val mutable balance = 0.0
+ method get = balance
+ method deposit a = balance<-balance +. a
+ method withdraw a = balance <- balance -. a
+ method print = print_float balance; print_newline()
+ initializer self#deposit b
+end;;
+class interest_account b =
+object
+ inherit account b
+ method interest = balance <- balance +. 5. *. balance /. 100.
+end;;
+class secure_account b =
+object
+ inherit account b as super
+ method withdraw a = if (balance -. a)>=0. then super#withdraw a else failwith "T'as pas l'flouze gros!"
+end;;
+class bank =
+ method
diff --git a/sem_6/HLIN603/ocaml/TP2/test.caml b/sem_6/HLIN603/ocaml/TP2/test.caml
new file mode 100644
index 0000000..a454ab3
--- /dev/null
+++ b/sem_6/HLIN603/ocaml/TP2/test.caml
@@ -0,0 +1,21 @@
+class aa =
+object
+ method print = print_endline("Je suis A")
+end;;
+class bb =
+object
+ inherit aa
+ method print = print_endline("Je suis B")
+end;;
+class cc =
+object
+ inherit bb as superb
+end;;
+class dd =
+object (self)
+ inherit cc as super
+ method print = print_endline("Je suis D")
+ method m = super#print
+end;;
+let a = new dd;;
+a#m;;
diff --git a/sem_6/HLIN611/.gitkeep b/sem_6/HLIN611/.gitkeep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/sem_6/HLIN611/.gitkeep
diff --git a/sem_6/HLIN611/Chap_4/TD b/sem_6/HLIN611/Chap_4/TD
new file mode 100644
index 0000000..ae2f148
--- /dev/null
+++ b/sem_6/HLIN611/Chap_4/TD
@@ -0,0 +1,29 @@
+Exo 1 :
+194.195.196.197/24
+194.195.196.206/24
+130.160.21.22/24
+130.160.140.22/24
+I) Classe C pour 1 et 2, Classe B pour 3 et 4 ( mais masque incorrect, devrait être /16)
+1) 194.195.196.1 to 194.195.196.254
+2) 194.195.196.1 to 194.195.196.254
+3) 130.160.21.1 to 130.160.21.254
+4) 130.160.140.1 to 130.160.140.254
+
+II)
+1) 11000010.11000011.11000100.11000101
+application du masque :
+OU 11111111.11111111.11111111.00000000
+ =11000010.11000011.11000100.00000000
+2) 11000010.11000011.11000100.11000101
+3) 10000010.10100000.00010101.00010110
+4) 10000010.10100000.10001100.00010110
+
+On change de reseau des lors qu'un bit commun avec le masque change d'une adresse à l'autre.
+
+III)
+Pour que H1 et H2 ne soient pas dans le meme reseaux : il faut un masque genre
+255.255.255.248
+
+Exo 2 :
+I)
+2)
diff --git a/sem_6/HLIN611/TCP/a.out b/sem_6/HLIN611/TCP/a.out
new file mode 100644
index 0000000..6d92efd
--- /dev/null
+++ b/sem_6/HLIN611/TCP/a.out
Binary files differ
diff --git a/sem_6/HLIN611/TCP/prog.c b/sem_6/HLIN611/TCP/prog.c
new file mode 100644
index 0000000..046d2f1
--- /dev/null
+++ b/sem_6/HLIN611/TCP/prog.c
@@ -0,0 +1,61 @@
+#include<stdlib.h>
+#include<stdio.h>
+#include<sys/socket.h>
+#include<netdb.h>
+#include<sys/types.h>
+#include<string.h>
+#include<arpa/inet.h>
+#include<errno.h>
+#define closesocket(s) close(s)
+
+typedef int SOCKET;
+typedef struct sockaddr_in SOCKADDR_IN;
+typedef struct sockaddr SOCKADDR;
+typedef struct in_addr IN_ADDR;
+int main (int argc, char ** argv){
+ if (argc != 2){
+ printf("Syntaxe : %s message\n",argv[0]);
+ return 1;
+ }
+
+ //init du socket local
+ struct sockaddr_in sin= { 0 };
+ int sock = socket(PF_INET, SOCK_STREAM, 0);
+ if(sock == -1)
+ {
+ perror("socket()");
+ exit(errno);
+ }
+
+ // inet_pton(AF_INET,"162.38.81.131",&(sin.sin_addr));
+ // //recherche de la cible
+ // const char * hostname = "s1.fdsetu.infra.umontpellier.fr";
+ // hostinfo=gethostbyname(hostname);
+ // if (hostinfo == NULL) /* l'hôte n'existe pas */
+ // {
+ // fprintf (stderr, "Unknown host %s.\n", hostname);
+ // exit(EXIT_FAILURE);
+ // }
+if (inet_pton(AF_INET,"162.38.81.131",&(sin.sin_addr))==-1){
+ perror("inet_pton()");
+ exit(errno);
+}
+// sin.sin_addr = *(IN_ADDR *) hostinfo->h_addr;
+sin.sin_port = htons(53325);
+sin.sin_family = AF_INET;
+if(connect(sock,(SOCKADDR *) &sin, sizeof(sin)) == -1)
+{
+ perror("connect()");
+ exit(errno);
+}
+
+char buffer[1024];
+strcpy(buffer,argv[2]);
+if(send(sock, buffer, strlen(buffer), 0) < 0)
+{
+ perror("send()");
+ exit(errno);
+}
+
+ return 0;
+}
diff --git a/sem_6/HLIN611/TD/TCP.txt b/sem_6/HLIN611/TD/TCP.txt
new file mode 100644
index 0000000..c3065a9
--- /dev/null
+++ b/sem_6/HLIN611/TD/TCP.txt
@@ -0,0 +1,19 @@
+Exercice 1 :
+1) Non
+2) Non
+3) Non
+
+Exercice 2 :
+1) Soit p1 et p2 deux paquets tcp, si p1 passe par r1 et p2 par r2, et que r1 est moins efficace que r2, alors p2 arrivera avant p1
+Si p1 est envoyé, et p2 l'est ensuite, si p1 est perdu en route, alors il sera renvoyé au bout de x temps, car non recu alors p1 arrivera après p2
+
+2) Dans le cas d'une connection p2p sur un même reseau local, les paquets arriveront dans l'ordre où ils ont étés envoyés.
+
+3) Pour la 1, meme reponse, pour la 2, ca depends
+
+Exercice 3 :
+1 ) Elle est envisageable mais non indispensable
+2) On attends l'accusé de reception avant de renvoyer un autre message, ce n'est pas optimal
+3 ) Si l'accusé de reception tarde à arriver, soit je retransmet le message, soit je redemande un accusé de reception soit je considère que la connection est morte
+4..
+5) Il faut identifier chaque paquet individuellement
diff --git a/sem_6/HLIN611/TP_TCP_P2/prog.c b/sem_6/HLIN611/TP_TCP_P2/prog.c
new file mode 100644
index 0000000..0575631
--- /dev/null
+++ b/sem_6/HLIN611/TP_TCP_P2/prog.c
@@ -0,0 +1,51 @@
+#include<stdlib.h>
+#include<stdio.h>
+#include<sys/socket.h>
+#include<netdb.h>
+#include<sys/types.h>
+#include<string.h>
+#include<arpa/inet.h>
+#include<errno.h>
+
+int main (int argc, char ** argv){
+ if (argc != 4){
+ printf("Nombre de paramètre incorrect : format : \n %s adresse port fichier",argv[0])
+ }
+ int Socket_envoi= socket(PF_INET,SOCK_STREAM,0);
+ FILE fichier = fopen(argv[3],"r");
+ struct sockaddr_in addresse;
+ printf("Fichier ouvert\n");
+ char buf;
+ if (inet_pton(AF_INET,argv[1],&(adresse.sin_addr))==-1){
+ perror("inet_pton()");
+ exit(errno);
+ }
+ adresse.sin_port = htons(atoi(argv[2]));
+ adresse.sin_family = AF_INET;
+ if(connect(Socket_envoi,(SOCKADDR *) &adresse, sizeof(adresse)) == -1)
+ {
+ perror("connect()");
+ exit(errno);
+ }
+ char tableau[1000];
+ int i =0;
+ if(send(Socket_envoi, argv[3], strlen(argv[3]), 0) < 0)
+ {
+ perror("send()");
+ exit(errno);
+ }
+ while (buf = getc(fichier)!= EOF){
+ tableau[i]=buf;
+ i++;
+ if ( i = 999){
+ if(send(Socket_envoi, tableau, strlen(tableau), 0) < 0)
+ {
+ perror("send()");
+ exit(errno);
+ }
+ i = 0;
+ }
+ }
+
+ return 0;
+}
diff --git a/sem_6/HLIN611/a.out b/sem_6/HLIN611/a.out
new file mode 100644
index 0000000..94dba0e
--- /dev/null
+++ b/sem_6/HLIN611/a.out
Binary files differ
diff --git a/sem_6/HLIN611/td1.md b/sem_6/HLIN611/td1.md
new file mode 100644
index 0000000..87b2f57
--- /dev/null
+++ b/sem_6/HLIN611/td1.md
@@ -0,0 +1,14 @@
+# TD 1 :
+
+Exercice 1 :
+a) 33 554 432 bits pour 1 image, 335 544 320 bits pour 10.
+b) A 55,6Kbits/s,
+Soit 100 minutes
+A 1Mbits/s : 5 minutes
+A 10Mb/s : 33 s
+A 100Mb/s : 3 s
+
+
+```
+
+``` \ No newline at end of file
diff --git a/sem_6/HLIN611/tp1.c b/sem_6/HLIN611/tp1.c
new file mode 100644
index 0000000..7ff5a2b
--- /dev/null
+++ b/sem_6/HLIN611/tp1.c
@@ -0,0 +1,72 @@
+#include<stdlib.h>
+#include<stdio.h>
+#include<sys/socket.h>
+#include<netdb.h>
+#include<sys/types.h>
+#include<string.h>
+#include<arpa/inet.h>
+#include <errno.h>
+
+int main (int argc, char ** argv){
+ if (argc != 2){
+ printf("Syntaxe : %s nom\n",argv[0]);
+ return 1;
+ }
+ struct addrinfo hints;
+ struct addrinfo *result, *rp;
+ int s;
+ char addrstr[64];
+ char ip[64];
+ char canonname[256];
+ memset(&canonname, 0, 256*sizeof(char));
+ memset(&ip, 0, 64*sizeof(char));
+ memset(&addrstr,0,64*sizeof(char) );
+ hints.ai_family=AF_UNSPEC;
+ hints.ai_socktype=0;
+ hints.ai_flags = AI_CANONNAME;
+ struct addrinfo * p ;
+ s= getaddrinfo(argv[1],NULL,&hints,&result);
+ if (s !=0) {
+ printf("error in getaddrinfo : %s\n", gai_strerror(s));
+ return 1;
+ }
+ strcpy(canonname, result->ai_canonname);
+ printf("%s\n",canonname);
+ int error;
+ char hostname[NI_MAXHOST] = "";
+ char oldhostname[NI_MAXHOST]="uesh";
+ for (p = result; p != NULL; p = p->ai_next){
+
+ error = getnameinfo(p->ai_addr, p->ai_addrlen, hostname, NI_MAXHOST, NULL, 0, 0);
+ if (error != 0)
+ {
+ printf("error in getnameinfo: %s\n", gai_strerror(error));
+ return 1;
+ }
+ if (strcmp(hostname,"")!=0 && strcmp(hostname,oldhostname)!=0){
+ printf("hostname : %s\n", hostname);
+ strcpy(oldhostname,hostname);
+ }
+ void * ptr;
+ switch(p->ai_family){
+ case AF_INET:
+ ptr = &((struct sockaddr_in * ) p->ai_addr)->sin_addr;
+ break;
+ case AF_INET6:
+ ptr = &((struct sockaddr_in6 * ) p->ai_addr)->sin6_addr;
+ break;
+ }
+ inet_ntop (p->ai_addr->sa_family,ptr, addrstr, 64 );
+ char type[100];
+ switch (p->ai_socktype){
+ case (SOCK_STREAM):
+ strcpy(type,"STREAM");
+ break;
+ case (SOCK_DGRAM):
+ strcpy(type,"DGRAM");
+ break;
+ }
+ printf("IP : %s type : %s\n",addrstr,type);
+ }
+ return 0;
+}
diff --git a/sem_6/Sans nom 1.ods b/sem_6/Sans nom 1.ods
new file mode 100644
index 0000000..019dcd0
--- /dev/null
+++ b/sem_6/Sans nom 1.ods
Binary files differ