7-socket的实践到内核--socket的监听
来源:互联网 发布:雪梨的淘宝店铺叫什么 编辑:程序博客网 时间:2024/05/21 19:16
listen(server_sockfd, 5);
asmlinkage long sys_listen(int fd, int backlog)
{
struct socket *sock;
int err, fput_needed;
int somaxconn;
sock = sockfd_lookup_light(fd, &err, &fput_needed);
if (sock) {
somaxconn = sock_net(sock->sk)->core.sysctl_somaxconn;
if ((unsigned)backlog > somaxconn)
backlog = somaxconn;
err = security_socket_listen(sock, backlog);
if (!err)
err = sock->ops->listen(sock, backlog);
fput_light(sock->file, fput_needed);
}
return err;
}
sockfd_lookup_light()函数我们在前边看到过了,我们同时比照一下sys_listen()与sys_bind()函数的差别,发现基本相同,只不同的地方就是
sock->ops->listen(sock, backlog);
static const struct proto_ops unix_stream_ops
static const struct proto_ops unix_dgram_ops
.listen = unix_listen,
static int unix_listen(struct socket *sock, int backlog)
{
int err;
struct sock *sk = sock->sk;
struct unix_sock *u = unix_sk(sk);
err = -EOPNOTSUPP;
if (sock->type!=SOCK_STREAM && sock->type!=SOCK_SEQPACKET)
goto out; /* Only stream/seqpacket sockets accept */
err = -EINVAL;
if (!u->addr)
goto out; /* No listens on an unbound socket */
unix_state_lock(sk);
if (sk->sk_state != TCP_CLOSE && sk->sk_state != TCP_LISTEN)
goto out_unlock;
if (backlog > sk->sk_max_ack_backlog)
wake_up_interruptible_all(&u->peer_wait);
sk->sk_max_ack_backlog = backlog;
sk->sk_state = TCP_LISTEN;
/* set credentials so connect can copy them */
sk->sk_peercred.pid = task_tgid_vnr(current);
sk->sk_peercred.uid = current->euid;
sk->sk_peercred.gid = current->egid;
err = 0;
out_unlock:
unix_state_unlock(sk);
out:
return err;
}
- 7-socket的实践到内核--socket的监听
- 7-socket的实践到内核--socket的监听 .
- 1--socket的实践到内核--socket实践练习
- 1--socket的实践到内核--socket实践练习 .
- 14-socket的实践到内核--socket的关闭
- 14-socket的实践到内核--socket的关闭
- 3-socket的实践到内核--追踪socket到内核
- 3-socket的实践到内核--追踪socket到内核 .
- 9-socket的实践到内核--client调用connect
- 9-socket的实践到内核--client调用connect .
- 10-socket的实践到内核--UDP的socket数据的接收
- 11-socket的实践到内核--UDP的socket数据的发送
- 12-socket的实践到内核--TCP的socket数据的接收
- 13-socket的实践到内核--TCP的socket数据的发送
- 10-socket的实践到内核--UDP的socket数据的接收
- 11-socket的实践到内核--UDP的socket数据的发送
- 12-socket的实践到内核--TCP的socket数据的接收
- 13-socket的实践到内核--TCP的socket数据的发送
- IE遇到问题需要关闭
- Lucene
- GID
- 贪心算法的详解
- 效仿新浪微博做的发布栏 限制字数
- 7-socket的实践到内核--socket的监听
- 代码大全2 中文版
- c++函数的内存分配机制
- truncate,delete,drop的异同点
- 8-socket的实践到内核--接受socket的连接
- dwr (session error)
- Eclipse 删除 空行
- 焊接小技巧_期刊摘录
- 9-socket的实践到内核--client调用connect