Você está na página 1de 2

Annexe 6 : Code source pingclientUDP.

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 f t p ∗/
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 c h a r msg [ ] = "USER TOTO\n" ; /∗ Commande FTP ∗/
25

26
27 /∗ 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 ∗/
28 i f ( a r g c != 3 ) {
29 p r i n t f ( " myftp . E r r e u r d ’ arguments \n" ) ;
30 p r i n t f ( " Syntaxe : %% pingclientUDP nom_serveur numero_port \n" ) ;
31 exit (1) ;
32 }
33
34
35 int port ; /∗ Numero de p o r t du s e r v e u r ∗/
36
37 /∗ R e c u p e r a t i o n nom du s e r v e u r ∗/
38 s e r v e u r = argv [ 1 ] ;
39 p o r t = a t o i ( argv [ 2 ] ) ;
40
41 /∗ 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 ∗/
42 i f ( ( h p t r = gethostbyname ( s e r v e u r ) ) == NULL) {
43 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" ) ;
44 exit (1) ;
45 }
46
47 /∗ 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 ∗/

47
48 /∗ 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 ) ; ∗/
49 bcopy ( ( c h a r ∗ ) hptr−>h_addr , ( c h a r ∗ )&s a . sin_addr , hptr−>h_length ) ;
50
51 /∗ F a m i l l e d ’ a d r e s s e : AF_INET = PF_INET ∗/
52 s a . s i n _ f a m i l y = AF_INET ;
53

54 /∗ I n i t i a l i s a t i o n du numero du p o r t ∗/
55 sa . sin_port = htons ( port ) ;
56 s a . sin_addr . s_addr = INADDR_ANY;
57
58 /∗ C r e a t i o n de l a s o c k e t TCP ∗/
59 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
60 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" ) ;
61 exit (1) ;
62 }
63
64

65
66
67 unsigned i n t s i z e = s i z e o f ( sa ) ;
68 char b u f f e r [ 1 0 0 ] ;
69 i n t n_bytes ;
70

71 while (1) {
72 // L e c t u r e d e s donnees e n t r e e s par l e c l i e n t
73 n_bytes = r e a d ( 0 , b u f f e r , s i z e o f ( b u f f e r ) ) ; // f d = 0 => d e s c r i p t e u r
de f i c h i e r s t a n d a r d d ’ e n t r e s t d i n
74
75 // Envoie d e s donnees au s e r v e u r
76 s e n d t o ( sd , b u f f e r , n_bytes ,0 ,& sa , s i z e ) ;
77
78 // 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 ( l a donnee de l ’ u t i l i s a t e u r −−
echo −−)
79 n_bytes = r e c v f r o m ( sd , b u f f e r , s i z e o f ( b u f f e r ) ,0 ,& sa ,& s i z e ) ;
80

81 // A f f i c h a g e de l a r e p o n s e du s e r v e u r c h e z l e c l i e n t ( A f f i c h a g e de
l a donnee e c r i t e )
82 w r i t e ( 1 , b u f f e r , n_bytes ) ; // f d = 1 => d e s c r i p t e u r de f i c h i e r
s t a n d a r d de s o r t i e s t d o u t
83
84 }
85
86
87
88 /∗ Fermeture de l a s o c k e t ∗/
89 c l o s e ( sd ) ;
90

91 exit (0) ;
92 }

re223/pingclientUDP.c

48

Você também pode gostar