SAI || Sommersemester 1997 || Systemnahe Software II || Übungen

<- Alle Module

Lösung zu Blatt 7 (Aufgabe 8): callsock.h + callsock.c

Socketverbindung zu einem bestehenden Port herstellen.

callsock.h

/*
 * oeffnet eine Socketverbindung zu einem bestehenden Port an einem
 * Unix-Server
 */

int call_socket(char *hostname, int portnum);


callsock.c

#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>

/*
 * oeffnet eine Socketverbindung zu einem bestehenden Port an einem
 * Unix-Server
 */

int call_socket(char *hostname, int portnum)
{
        struct sockaddr_in sa;
        struct hostent *hp;
        int a, s;

                                        /* mache IP-Adresse aus dem Namen */
        if (!(hp = gethostbyname(hostname)))
                return -1;
        
        memset(&sa, 0, sizeof(sa));     /* Struktur initialisieren      */
                                        /* kopiere IP_Adresse fuer Aufruf */
        memcpy(&sa.sin_addr, hp->h_addr, hp->h_length);

        sa.sin_family = AF_INET;        /* Adresstyp Internet           */
        sa.sin_port = htons(portnum);   /* Netzwerkdarstellung der Portno. */
                                        /* Socket als Stream oeffen     */
        if ((s = socket(AF_INET, SOCK_STREAM, 0)) <0)
                return -1;
                                        /* An Host & Port anbinden      */
        if (connect(s, (struct sockaddr*)&sa, sizeof(sa)) <0)
        {       close(s);
                return -1;
        }
        return s;
}
<- Alle Module
SAI || Sommersemester 1997 || Systemnahe Software II || Übungen

Matthias Grabert, Juli 1997