Thread: problem with ipv6 sockets on bind

  1. #1
    Registered User
    Join Date
    Jan 2008
    Posts
    79

    problem with ipv6 sockets on bind

    This function errors on bind, i havent updated my setup in a while is it possible using a ipv6 setup wont work on my computer?

    Socket operation on non-socket: Error Bind


    Code:
    int createServer(char *port){
    
    	int serverSocket;
    	int yes = 1;
    	struct addrinfo hints,*res;
       	memset(&hints,0,sizeof hints);
    	hints.ai_family = AF_UNSPEC;
    
    	hints.ai_socktype = SOCK_STREAM;
    
    	hints.ai_flags = AI_PASSIVE;
    
            if(getaddrinfo(NULL,port,&hints,&res) ==-1){
     		bail("Error getaddrinfo");
    	} 
    
    	if(serverSocket = socket(res->ai_family,res->ai_socktype,res->ai_protocol)==-1)
    	bail("Errror socket");
    	
    	setsockopt(serverSocket,SOL_SOCKET,SO_REUSEADDR,&yes,sizeof(int));
    
    	if(bind(serverSocket,res->ai_addr,res->ai_addrlen)==-1){
    
    	bail("Error Bind");
    	}
    
    
    	if(listen(serverSocket,5)==-1){
    
    		bail("Error Listen");
    	}
    	printf("Listening for connections on port %d..\n",port);
    
    	//more variables we need.
    	
    	socklen_t addr_size;
    	int connectedSocket;
    	struct sockaddr_storage their_addr;
    
    	if(connectedSocket = accept(serverSocket,(struct sockaddr *)&their_addr,&addr_size)==-1){
    
    		bail("Error Accept");
    	}
    	
    	
        return connectedSocket;
    }

  2. #2
    Registered User
    Join Date
    Jan 2008
    Posts
    79
    further info, on annoying bug

    This function works and creates the socket ok and connects
    Code:
    int connects(char *server, char *port){
    	
    	struct addrinfo hints, *res;
    	int sock;
    	
    	memset(&hints,0,sizeof hints);
    	hints.ai_family = AF_UNSPEC;
    	hints.ai_socktype = SOCK_STREAM;
    
    	getaddrinfo(server,port,&hints,&res);
    	sock = socket(res->ai_family,res->ai_socktype,res->ai_protocol);
    	if(connect(sock,res->ai_addr,res->ai_addrlen)==-1){
    
    	bail("Connect");
    
    	}
    
    	printf("connected \n");
    	close(sock);
    
    
    }

    This function does not work and errors on set sock options reason: socket operation on non socket, i don't understand this as im creating the socket in the same way as above example

    Code:
    int createServer(char *port){
    
    	int serverSocket;
    	int yes = 1;
    	struct addrinfo hints,*res;
       	memset(&hints,0,sizeof hints);
    	hints.ai_family = AF_UNSPEC;
    
    	hints.ai_socktype = SOCK_STREAM;
    
    	hints.ai_flags = AI_PASSIVE;
    
            if(getaddrinfo(NULL,port,&hints,&res) ==-1){
     		bail("Error getaddrinfo");
    	} 
    
    	if(serverSocket = socket(res->ai_family,res->ai_socktype,res->ai_protocol)==-1)
    	bail("Errror socket");
    	
    	if(setsockopt(serverSocket,SOL_SOCKET,SO_REUSEADDR,&yes,sizeof(int))==-1){
    
    	bail("Set Sock opt");
    
    	}
    
    	if(bind(serverSocket,res->ai_addr,res->ai_addrlen)==-1){
    
    	bail("Error Bind");
    	}
    
    
    	if(listen(serverSocket,5)==-1){
    
    		bail("Error Listen");
    	}
    	printf("Listening for connections on port %d..\n",port);
    
    	//more variables we need.
    	
    	socklen_t addr_size;
    	int connectedSocket;
    	struct sockaddr_storage their_addr;
    
    	if(connectedSocket = accept(serverSocket,(struct sockaddr *)&their_addr,&addr_size)==-1){
    
    		bail("Error Accept");
    	}
    	
    	
        return connectedSocket;
    }

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Sockets Problem C++
    By guitarist809 in forum Windows Programming
    Replies: 1
    Last Post: 08-25-2010, 07:22 PM
  2. problem with unblocking sockets
    By AlTimin in forum C Programming
    Replies: 0
    Last Post: 06-05-2010, 11:26 AM
  3. Sockets: IPv4 vs IPv6
    By ninboy in forum Networking/Device Communication
    Replies: 1
    Last Post: 10-15-2008, 01:02 AM
  4. Sockets and UDP problem
    By ally153 in forum C Programming
    Replies: 5
    Last Post: 03-20-2006, 05:19 AM