On 9 Jul, Chris Given wrote: > I can't figure out why this code won't bind to 127.0.0.1 on FreeBSD. I get > an error "Can't assign requested address". >
> struct sockaddr_in dp; > unsigned long bind_to_addr = inet_addr("127.0.0.1"); > > sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); > if(sock < 0) { > printf("Error socket : %s\n", strerror(errno)); > return -1; > } > > dp.sin_family = AF_INET; > dp.sin_addr.s_addr = htonl(bind_to_addr); > dp.sin_port = htons(1234); In addition to the byte order problem you haven't initialized the sin_len member of dp and cleared the sin_zero member. Typically code will zero out the entire structure to clear any padding or fields that can default to zero before it stores the desired data in the structure. Here's an example I found in rwhod: struct sockaddr_in sin; ... memset(&sin, 0, sizeof(sin)); sin.sin_len = sizeof(sin); sin.sin_family = AF_INET; sin.sin_port = sp->s_port; if (bind(s, (struct sockaddr *)&sin, sizeof(sin)) < 0) { syslog(LOG_ERR, "bind: %m"); exit(1); } To Unsubscribe: send mail to [EMAIL PROTECTED] with "unsubscribe freebsd-net" in the body of the message