diff options
| author | deva <deva> | 2005-03-29 20:07:22 +0000 | 
|---|---|---|
| committer | deva <deva> | 2005-03-29 20:07:22 +0000 | 
| commit | 789ed99ffdeae638e9191ca99272e536f36f6934 (patch) | |
| tree | 29c884d1a6838cbdfc46feb6fb81da7a003f5eec /src/socket.cc | |
| parent | 8baab8060621a4d219b84b14677990047ff0bf26 (diff) | |
Added a lot of error detection stuff to the camera, player, encoder and decoder objects.
Diffstat (limited to 'src/socket.cc')
| -rw-r--r-- | src/socket.cc | 54 | 
1 files changed, 34 insertions, 20 deletions
diff --git a/src/socket.cc b/src/socket.cc index 7cee58a..851a6ea 100644 --- a/src/socket.cc +++ b/src/socket.cc @@ -26,33 +26,36 @@  #include "socket.h" -Socket::Socket() +Socket::Socket(Error* _err)  { +  error = _err;    connected = false;    err = 0;  } -Socket::Socket(u_short port) +Socket::Socket(u_short port, Error* _err)  { +  error = _err;    connected = false;    err = 0; -  //  printf("Socket on port: %d\n", port); -    // create socket -  ssocket = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); // PF_INET: ipv4, PF_INET6: ipv6 -                                                      // tcp: IPPROTO_TCP -                                                      // upd: IPPROTO_UDP +  ssocket = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);  +  // PF_INET: ipv4, PF_INET6: ipv6 +  // tcp: IPPROTO_TCP +  // upd: IPPROTO_UDP +    if (ssocket < 0) {      err = 1; -    perror("Socket: socket() failed"); +    char errbuf[] = "Socket: socket() failed!\0"; +    if(error) error->pushError(errbuf); +    else perror(errbuf);    } -  socketaddr.sin_family = AF_INET;       // Use "internet protocol" IP -  socketaddr.sin_port = htons(port);            // connect to that port -  socketaddr.sin_addr.s_addr = INADDR_ANY;// INADDR_ANY puts your IP address automatically  - -  //  fprintf(stderr, "Socket created\n"); +  socketaddr.sin_family = AF_INET; // Use "internet protocol" IP +  socketaddr.sin_port = htons(port);  // connect to that port +  socketaddr.sin_addr.s_addr = INADDR_ANY; +  // INADDR_ANY puts your IP address automatically   } @@ -69,7 +72,9 @@ Socket Socket::slisten()    Socket s = Socket();    if(err) { -    perror("Socket: No socket present"); +    char errbuf[] = "Socket: No socket present!\0"; +    if(error) error->pushError(errbuf); +    else perror(errbuf);      return s;    }    if(!connected) { @@ -81,10 +86,13 @@ Socket Socket::slisten()        return s;      } -    // start listen for connection - kernel will accept connection requests (max 5 in queue) +    // start listen for connection - kernel will accept connection  +    // requests (max 5 in queue)      err = listen(ssocket, 5);      if(err) { -      perror("Socket: listen() failed"); +      char errbuf[] = "Socket: listen() failed!\0"; +      if(error) error->pushError(errbuf); +      else perror(errbuf);        return s;      }    } @@ -92,14 +100,18 @@ Socket Socket::slisten()    // accept new connection and get its connection descriptor    int csalen = sizeof(s.socketaddr); -  s.ssocket = accept(ssocket, (struct sockaddr*)&s.socketaddr, (socklen_t*)&csalen); +  s.ssocket = accept(ssocket,  +                     (struct sockaddr*)&s.socketaddr,  +                     (socklen_t*)&csalen); +    if (s.ssocket < 0) {      err = 1; -    perror("Socket: accept() failed"); +    char errbuf[] = "Socket: accept() failed!\0"; +    if(error) error->pushError(errbuf); +    else perror(errbuf);      return s;    } -  fprintf(stderr, "Socket connected\n");    connected = true;    s.connected = true;    return s; @@ -119,7 +131,9 @@ int Socket::sconnect(char *ip)    err = connect(ssocket, (struct sockaddr*)&socketaddr, sizeof(socketaddr));    if (err) { -    perror("Socket: connect() failed"); +    char errbuf[] = "Socket: connect() failed!\0"; +    if(error) error->pushError(errbuf); +    else perror(errbuf);      return err;    }    //  fprintf(stderr, "Socket connected\n");  | 
