Vous êtes sur la page 1sur 2

Annexe 3 : Code source mydateUDP.

1 #i n c l u d e <s t d i o . h>
2 #i n c l u d e < s t d l i b . h>
3 #i n c l u d e <u n i s t d . h>
4 #i n c l u d e < s t r i n g s . h>
5 #i n c l u d e <s t r i n g . h>
6 #i n c l u d e <s y s / t y p e s . h>
7 #i n c l u d e <s y s / s o c k e t . h>
8 #i n c l u d e <n e t i n e t / i n . h>
9 #i n c l u d e <netdb . h>
10
11 #d e f i n e FTPPORT 13 /∗ Numero du p o r t du s e r v e u r daytime ∗/
12
13 i n t main ( argc , argv )
14 int argc ;
15 c h a r ∗ argv [ ] ;
16 {
17 i n t sd ;
18 s t r u c t sockaddr_in s a ; /∗ S t r u c t u r e I n t e r n e t sockaddr_in ∗/
19 s t r u c t hostent ∗ hptr ; /∗ I n f o s s u r l e s e r v e u r ∗/
20
21 char ∗ se rveur ; /∗ Nom du s e r v e u r d i s t a n t ∗/
22 c h a r buf [ 2 5 6 ] ; /∗ B u f f e r ∗/
23 int n , i ;
24
25

26 /∗ V e r i f i c a t i o n du nombre d ’ arguments de l a l i g n e de commande ∗/


27 i f ( a r g c != 2 ) {
28 p r i n t f ( "mydateUDP . E r r e u r d ’ arguments \n" ) ;
29 p r i n t f ( " Syntaxe : %% mydateUDP nom_serveur_ftp \n" ) ;
30 exit (1) ;
31 }
32
33 /∗ R e c u p e r a t i o n nom du s e r v e u r ∗/
34 s e r v e u r = argv [ 1 ] ;
35
36 /∗ R e c u p e r a t i o n d e s i n f o s s u r l e s e r v e u r dans / e t c / h o s t s ou par DNS ∗/
37 i f ( ( h p t r = gethostbyname ( s e r v e u r ) ) == NULL) {
38 p r i n t f ( " Probleme de r e c u p e r a t i o n d ’ i n f o s s u r l e s e r v e u r \n" ) ;
39 exit (1) ;
40 }
41
42 /∗ I n i t i a l i s a t i o n l a s t r u c t u r e s o c k a d d r s a ∗/
43 /∗ bcopy ( v o i d ∗ s o u r c e , v o i d ∗ d e s t i n a t i o n , s i z e _ t t a i l l e ) ; ∗/
44 bcopy ( ( c h a r ∗ ) hptr−>h_addr , ( c h a r ∗ )&s a . sin_addr , hptr−>h_length ) ;
45
46 /∗ F a m i l l e d ’ a d r e s s e : AF_INET = PF_INET ∗/
47 s a . s i n _ f a m i l y = AF_INET ;

41
48
49 /∗ I n i t i a l i s a t i o n du numero du p o r t ∗/
50 s a . s i n _ p o r t = h t o n s (FTPPORT) ;
51
52 /∗ C r e a t i o n de l a s o c k e t TCP ∗/
53 i f ( ( sd = s o c k e t (AF_INET, SOCK_DGRAM, 0 ) ) < 0 ) { // AF_INET −> IPv4 | |
SOCK_STREAM −> TCP e t SOCK_DGRAM −> UDP
54 p r i n t f ( " Probleme l o r s de l a c r e a t i o n de s o c k e t \n" ) ;
55 exit (1) ;
56 }
57
58 /∗ E t a b l i s s e m e n t de l a c o n n e x i o n avec l e s e r v e u r daytime ∗/
59 i f ( ( c o n n e c t ( sd , ( s t r u c t s o c k a d d r ∗ ) &sa , s i z e o f ( s a ) ) ) < 0 ) {
60 p r i n t f ( " Probleme de c o n n e x i o n avec l e s e r v e u r \n" ) ;
61 exit (1) ;
62 }
63
64

65 unsigned i n t s = s i z e o f ( sa ) ;
66 /∗ Envoi de l a commande f t p v e r s s e r v e u r daytime ∗/
67 s e n d t o ( sd , buf , s i z e o f ( buf ) , 0 , ( s t r u c t s o c k a d d r ∗ ) &sa , s ) ;
68
69 /∗ L e c t u r e de l a r e p o n s e du s e r v e u r daytime ∗/
70 n = r e c v f r o m ( sd , buf , s i z e o f ( buf ) , 0 , ( s t r u c t s o c k a d d r ∗ ) &sa ,& s ) ;
71 w r i t e ( 1 , buf , n ) ;
72
73
74 /∗ Fermeture de l a s o c k e t ∗/
75 c l o s e ( sd ) ;
76

77 exit (0) ;
78 }

re223/mydateUDP.c

42

Vous aimerez peut-être aussi