- 论坛徽章:
- 0
|
我用的是redhat 9,写的程序用到了unix socket,创建socket函数如下
#define LOCAL_PATH "/tmp/netlink.tmp"
static int local_listen ()
{
struct sockaddr_un sa;
int listen_fd;
int fl_val;
if ((listen_fd = socket (AF_LOCAL, SOCK_STREAM, 0)) == -1)
{
return -1;
}
unlink (LOCAL_PATH);
bzero (&sa, sizeof (sa));
sa.sun_family = AF_LOCAL;
strncpy (sa.sun_path, LOCAL_PATH, sizeof (sa.sun_path) - 1);
if (bind (listen_fd, (struct sockaddr *) &sa, sizeof (sa)) == -1)
{
return -1;
}
if (listen (listen_fd, 5) == -1)
{
return -1;
}
fl_val = fcntl (listen_fd, F_GETFL, 0);
fl_val |= O_NONBLOCK;
fcntl (listen_fd, F_SETFL, fl_val);
return listen_fd;
}
监听这个socket时候,有时候它总接收到空包,我检查多次,这个空包不是我程序发的,问题很奇怪,以前没用过这种unix socket,会不会跟"/tmp/netlink.tmp"临时文件有关啊~~
请高手赐教 |
|