摘要:
send系统调用只是对sendto系统调用进行了封装,传递的参数不包含目的地址信息,数据会发送到已经建立连接的另一端的地址; 1 /* 2 * Send a datagram down a socket. 3 */ 4 5 SYSCALL_DEFINE4(send, int, fd, void __ 阅读全文
摘要:
sendto系统调用用于向指定的目的地址发送数据,其系统调用的流程比较容易理解,如下面所示,其主要完成 (1)将用户数据组织成msghdr,(2)而后调用socket操作的sendmsg;ipv4对应的sendmsg实现为inet_sendmsg,该函数进行端口自动绑定检查和绑定后,调用传输层的se 阅读全文
摘要:
用户端在使用sendmsg/recvmsg发送或者接收数据时,会使用msghdr来构造消息,其对应的内核结构为user_msghdr;其中msg_iov向量指向了多个数据区,msg_iovlen标识了数据区个数;在通过系统调用进入内核后,该结构中的信息会拷贝给内核的msghdr结构; 1 /* 用户 阅读全文
摘要:
select是IO多路复用的一种方式,用来等待一个列表中的多个描述符的可读可写状态; 1 SYSCALL_DEFINE5(select, int, n, fd_set __user *, inp, fd_set __user *, outp, 2 fd_set __user *, exp, stru 阅读全文
摘要:
close系统调用用于关闭文件描述符,其系统调用实现如下所示; 1 / 2 * Careful here! We test whether the file pointer is NULL before 3 * releasing the fd. This ensures that one clon 阅读全文
摘要:
listen函数 1 #include <sys/socket.h> 2 3 int listen(int sockfd, int backlog); 4 5 //ret-成功返回0 失败返回-1 listen仅由服务器调用,它做两件事情: (1) 当socket创建一个套接字的时候,它被假设为一个 阅读全文