Problem with emulating socketpair(2)
Tim Ramsey
tar at ksuvax1.cis.ksu.edu
Mon Feb 13 18:50:41 AEST 1989
I'm trying to write a function that will connect two sockets together.
This piece of code creates a socket, returning its file descriptor:
struct in_addr host_addr; /* Initialized to 0's */
makesock()
{
int sock;
struct sockaddr_in name;
if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
perror("socket");
exit(1);
}
name.sin_addr = host_addr;
name.sin_port = 0;
if (bind(sock, &name, sizeof (name)) == -1) {
perror("bind");
exit(1);
}
return (sock);
}
This piece of code is *supposed* to connect the two sockets created by
makesock() together:
attach(one, two)
int one, two;
{
struct sockaddr_in name;
int length;
length = sizeof (name);
if (getsockname(one, &name, &length) == -1) {
perror("getsockname one");
exit(1);
}
if (connect(two, &name, length) == -1) {
perror("connect two");
exit(1);
}
[ reverse one and two, repeat ]
}
The connect fails with the error EADDRNOTAVAIL ("Can't assign requested
address"). What am I doing wrong?
Disclaimer: I'm not using socketpair(2) because this implementation forgot
to include it, even though it's listed in the manual. I'm using SysV
Rel2.1.2 with WIN/3B TCP/IP 1.1.
Thanks for any help or pointers you can provide.
Tim
--
Timothy Ramsey
BITNET: tar at KSUVAX1
Internet: tar at ksuvax1.cis.ksu.edu
UUCP: ...!rutgers!ksuvax1!tar
More information about the Comp.unix.wizards
mailing list