June 29th Friday (六月 二十九日 金曜日)
2007-07-14 11:46
411 查看
The Unix domain protocols are not an actual protocol suite, but a way of performing
client/server communication on a single host using the same API that is used for clients
and servers on different hosts. The Unix domain protocols are an alternative to the
interprocess communication (IPC) methods, when the client and server are on the same host.
Two types of sockets are provided in the Unix domain: stream sockets (similar to TCP)
and datagram sockets (similar to UDP). Even though a raw socket is also provided, its
semantics have never been documented, it is not used by any program that the authors are
aware of, and it is not defined by POSIX.
struct sockaddr_un {
sa_family_t sun_family; /* AF_LOCAL */
char sun_path[104]; /* null-terminated pathname */
};
The POSIX specification does not define the length of the sun_path array and it specifically
warns that applications should not assume a particular length. Use the sizeof operator to find
the length at run-time and to verify that a pathname fits into the array. The length is likely
to be between 92 and 108 rather than a larger value big enough to hold any pathname. The reason
for these limits is an implementation artifact dating back to 4.2BSD requiring that this structure
fit in a 128-byte mbuf (a kernel memory buffer).
The pathname stored in the sun_path array must be null-terminated. The macro SUN_LEN is provided
and it takes a pointer to a sockaddr_un structure and returns the length of the structure, including
the number of non-null bytes in the pathname. The unspecified address is indicated by a null string
as the pathname, that is, a structure with sun_path[0] equal to 0. This is the Unix domain equivalent
of the IPv4 INADDR_ANY constant and the IPv6 IN6ADDR_ANY_INIT constant.
POSIX renames the Unix domain protocols as "local IPC," to remove the dependence on the Unix OS.
The historical constant AF_UNIX becomes AF_LOCAL. Nevertheless, we still use the term "Unix domain"
as that has become its de facto name, regardless of the underlying OS. Also, even with POSIX attempting
to make these OS-independent, the socket address structure still retains the _un suffix!
Notice: the file path used to communicate must be created by receiver using bind(). The sender can not
invoke unlink() delete the path. It will cause sendto() or recvfrom() errors.
client/server communication on a single host using the same API that is used for clients
and servers on different hosts. The Unix domain protocols are an alternative to the
interprocess communication (IPC) methods, when the client and server are on the same host.
Two types of sockets are provided in the Unix domain: stream sockets (similar to TCP)
and datagram sockets (similar to UDP). Even though a raw socket is also provided, its
semantics have never been documented, it is not used by any program that the authors are
aware of, and it is not defined by POSIX.
struct sockaddr_un {
sa_family_t sun_family; /* AF_LOCAL */
char sun_path[104]; /* null-terminated pathname */
};
The POSIX specification does not define the length of the sun_path array and it specifically
warns that applications should not assume a particular length. Use the sizeof operator to find
the length at run-time and to verify that a pathname fits into the array. The length is likely
to be between 92 and 108 rather than a larger value big enough to hold any pathname. The reason
for these limits is an implementation artifact dating back to 4.2BSD requiring that this structure
fit in a 128-byte mbuf (a kernel memory buffer).
The pathname stored in the sun_path array must be null-terminated. The macro SUN_LEN is provided
and it takes a pointer to a sockaddr_un structure and returns the length of the structure, including
the number of non-null bytes in the pathname. The unspecified address is indicated by a null string
as the pathname, that is, a structure with sun_path[0] equal to 0. This is the Unix domain equivalent
of the IPv4 INADDR_ANY constant and the IPv6 IN6ADDR_ANY_INIT constant.
POSIX renames the Unix domain protocols as "local IPC," to remove the dependence on the Unix OS.
The historical constant AF_UNIX becomes AF_LOCAL. Nevertheless, we still use the term "Unix domain"
as that has become its de facto name, regardless of the underlying OS. Also, even with POSIX attempting
to make these OS-independent, the socket address structure still retains the _un suffix!
Notice: the file path used to communicate must be created by receiver using bind(). The sender can not
invoke unlink() delete the path. It will cause sendto() or recvfrom() errors.
相关文章推荐
- June 8th Friday (六月 八日 金曜日)
- 2008 August 29th Friday (八月 二十九日 金曜日)
- May 29th Friday (五月 二十九日 金曜日)
- June 22th Friday (六月 二十二日 金曜日)
- June 29th Monday (六月 二十九日 月曜日)
- June 5th Friday (六月 五日 金曜日)
- June 26th Friday (六月 二十六日 金曜日)
- June 1th Friday (六月 一日 金曜日)
- June 12th Friday (六月 十二日 金曜日)
- 2008 February 29th Wednesday (二月 二十九日 金曜日)
- June 19th Friday (六月 十九日 木曜日)
- June 15th Wednesday (六月 十五日 金曜日)
- June 6th Wednesday (六月 六日 水曜日)
- June 19th Tuesday (六月 十九日 火曜日)
- 2008 February 1st Friday (二月 一日 金曜日)
- 2008 August 8th Friday (八月 八日 金曜日)
- 2008 November 28th Friday (十一月 二十八日 金曜日)
- February 6th Friday 2009 (二月 六日 金曜日)
- 2009 March 27th Friday (三月 二十七日 金曜日)
- May 15th Friday (五月 十五日 金曜日)