05.11.2013 Aufrufe

Zahn - Unix-Netzwerkprogramminerung mit Threads, Sockets und SSL

Zahn - Unix-Netzwerkprogramminerung mit Threads, Sockets und SSL

Zahn - Unix-Netzwerkprogramminerung mit Threads, Sockets und SSL

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

186 4 Gr<strong>und</strong>lagen der Socket-Programmierung<br />

vom System ein TCP-Socket für IPv4 bereitgestellt wird. Die socket()-<br />

Funktion liefert einen entsprechenden neuen Socketdeskriptor zurück. Ist der<br />

Rückgabewert -1, ist also sd kleiner 0, so brechen wir das Programm <strong>mit</strong><br />

einer entsprechenden Fehlermeldung ab.<br />

1 #include <br />

2 #include <br />

3 #include <br />

4 #include <br />

5 #include <br />

6 #include <br />

7 #include <br />

Beispiel 4.5. timeclient.c<br />

8<br />

9 int main( int argc, char *argv[] )<br />

10 {<br />

11 int sd;<br />

12 struct sockaddr_in sa;<br />

13 time_t stime = 0;<br />

14<br />

15 if( argc != 2 )<br />

16 {<br />

17 printf( "Usage: %s ipv4-address\n", argv[0] );<br />

18 exit( EXIT_FAILURE );<br />

19 }<br />

20<br />

21 /* TCP Socket anlegen */<br />

22 if( ( sd = socket( AF_INET , SOCK_STREAM , 0 ) ) < 0 )<br />

23 {<br />

24 printf( "socket() failed: %s\n", strerror( errno ) );<br />

25 exit( EXIT_FAILURE );<br />

26 }<br />

27<br />

28 /* Initialisierung der Socket -Adreßstruktur */<br />

29 memset( &sa, 0, sizeof( sa ) ); /* erst alles auf 0 */<br />

30 sa.sin_family = AF_INET; /* IPv4 */<br />

31 sa.sin_port = htons( 37 ); /* Time Server Port */<br />

32 /* IPv4-Adresse in Netzwerkdarstellung einsetzen */<br />

33 if( inet_pton( AF_INET , argv[1], &sa.sin_addr ) != 1 )<br />

34 {<br />

35 printf( "inet_pton() failed.\n" );<br />

36 close( sd );<br />

37 exit( EXIT_FAILURE );<br />

38 }<br />

39<br />

40 /* Verbindung zum Time Server aufbauen */<br />

41 if( connect( sd, (struct sockaddr *)&sa,

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!