You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Interprocess Communication<br />
Server<br />
socket()<br />
|<br />
bind()<br />
|<br />
recvfrom()<br />
| Client<br />
blocks until connection from client<br />
socket()<br />
| |<br />
| connect()<br />
| |<br />
process request| |<br />
| |<br />
sendto() recvfrom()<br />
! Socket system calls connectionless protocol<br />
<strong>Unix</strong> Domain Protocols<br />
Provide a feature that is not currently provided by any o<strong>the</strong>r protocol family: <strong>the</strong> ability to pass access rights from<br />
one process to ano<strong>the</strong>r.<br />
The name space used by unix domain protocols consists of pathnames, for example:<br />
{ unixstr, 0 /tmp/log.1528, 0, /dev/logfile }<br />
unixstr unix stream connection oriented<br />
0 local address<br />
/tmp/log.1528 local process<br />
0 remote address<br />
0 /dev/logfile remote process<br />
Socket Addresses<br />
/* defined in */<br />
struct sockaddr {<br />
u_short sa_family; /* address family: AF_xxx */<br />
char sa_data[14];} /* protocol specific addr */<br />
/* defined in */<br />
struct in_addr {<br />
u_long s_addr; /* 32-bit netid/hostid */<br />
}; /* network byte ordered */<br />
struct sockaddr_in {<br />
short sin_family; /* AF_INET * /<br />
u_short sin-port; /* 16-bit port number */<br />
struct in_addr sin_addr; /* netid/hostid */<br />
char sin_zero[8]; /* unused */<br />
};<br />
/* defined in */<br />
struct sockaddr_un {<br />
short sun_family; /* AF_UNIX */<br />
char sun_path[108]; /* pathname */<br />
};<br />
Socket address structures struct sockaddr_in struct sockaddr_un<br />
family<br />
family<br />
2 byte port<br />
4 byte net ID, host ID<br />
pathname<br />
(unused)<br />
(upto 108 bytes)<br />
struct sockaddr_in serv_addr;<br />
165