← Back to team overview

sslug-teknik team mailing list archive

Sockets og C++

 

Endnu en off-topic ting fra mig...

Hvorfor kan jeg ikke få lov til at kalde close(sockfd) i min destructor
i nedenstående kode? Hvad mangler jeg at include? Jeg ved godt at bzero
og err_sys er ude, og skal nok finde på passende løsninger til det, men
forslag til bzero modtages da med kyshånd.

Anders

class Tsense_clisock {
 private:
  struct sockaddr_in serv_addr;
  int sockfd;
 public:
  // Constructor - creates and connects socket
  Tsense_clisock(char serverIP[], int serverport) {
    bzero((char*) &serv_addr, sizeof(serv_addr));
    serv_addr.sin_family = AF_INET;
    serv_addr.sin_addr.s_addr = inet_addr(serverIP);
    serv_addr.sin_port = htons(serverport);
    if ((sockfd = socket(AF_INET, SOCK_STREAM, 0))<0)
      err_sys("Tsense_clisock: can't open stream socket");
    if (connect(sockfd, (struct sockaddr *) &serv_addr,
sizeof(serv_addr))<0)
      err_sys("Tsense_clisock: can't connect to server");
    }
    // Destructor - closes the socket
    ~Tsense_clisock() {close(sockfd);}
    // Writes nbytes from buf to socket
  write(char * buf, int nbytes) {;}
  // Recieves into buf. Allocates new memory for buf and returns number
of
  // bytes read in nbytes
  read(char buf[], int &nbytes) {;}
    };

-- 
Anders S. Johansen, Jagtvej 109, 3.tv, 2200 Kbh. N +045 35836565
Wisdom = TANJ + TANSTAAFL


Follow ups