Return to BSD News archive
Newsgroups: comp.unix.bsd.netbsd.misc
Path: euryale.cc.adfa.oz.au!newshost.anu.edu.au!harbinger.cc.monash.edu.au!simtel!chi-news.cic.net!news.midplains.net!gw2.att.com!nntpa!news
From: "J.T. Holmes x7683" <jtholmes>
Subject: Re: bind()ing a socket to a specific address?
Content-Type: text/plain
Message-ID: <DG740K.EK7@nntpa.cb.att.com>
To: jtholmes@alphlz.att.com
Sender: news@nntpa.cb.att.com (Netnews Administration)
Nntp-Posting-Host: nmg3-gw.alph.att.com
Content-Transfer-Encoding: 7bit
Organization: AT&T
References: <45136o$6qf@wn1.sci.kun.nl> <451ito$h4i@sunsystem5.informatik.tu-muenchen.de>
Mime-Version: 1.0
Date: Mon, 9 Oct 1995 19:12:20 GMT
X-Mailer: Mozilla 1.1 (X11; U; SunOS 4.1.3_DB sun4c)
X-Url: news:451ito$h4i@sunsystem5.informatik.tu-muenchen.de
Lines: 50
From: gruner@Informatik.TU-Muenchen.DE (Armin Gruner)
Newsgroups: comp.unix.bsd.netbsd.misc
Subject: Re: bind()ing a socket to a specific address?
Date: 5 Oct 1995 21:32:40 GMT
Organization: Technische Universitaet Muenchen, Germany
Message-ID: <451ito$h4i@sunsystem5.informatik.tu-muenchen.de>
References: <45136o$6qf@wn1.sci.kun.nl>
rhialto@polder.ubc.kun.nl (Olaf Seibert) writes:
>I am trying to bind() a socket to a specific IP address, but I always
>get the error EADDRNOTAVAIL: "Can't assign requested address".
>Nevertheless, as far as I can see, this should be possible.
>The only address that will work is INADDR_ANY (i.e., 0.0.0.0).
>I took a quick look in the kernel sources, and what I saw should also
>allow it.
>Any hints? I have appended source of my program (not very long).
>Try it with command line such as a.out localhost 1234 (does not work)
>or a.out 0 1234 (does work but is not what I want).
>int
>main(int argc, char **argv)
>{
> if (argc >= 2) {
> struct sockaddr_in hostaddr;
> char *proto = "tcp";
> int ac;
bzero(&hostaddr, sizeof(hostaddr));
or
memset(&hostaddr, 0, sizeof(hostaddr));
> get_ip(argv[1], &hostaddr);
> for (ac = 2; ac < argc; ac++) {
> if (prototosocktype(argv[ac]) != -1) {
> proto = argv[ac];
> continue;
> }
> make_socket(hostaddr, proto, argv[ac]);
> }
> /* and do nothing else anymore */
> select(0, NULL, NULL, NULL, NULL);
> }