socket()的内核实现(1)——sys_socketcall()

  在 linux系统中,用户发起的网络调用,如 sockcet(),send()等等 ,通过系统调用接口进入内核,最后内核调用 ./net/socket.c 中的 sys_socketcall(),将特定的调用分路发送到指定目标,例如 sockcet()调用将由 sys_socket()完成(此函数在 ./net/socket.c定义),而 send()调用将由 sys_send()完成。

sys_socketcall()./net/socket.c中定义,它的部分代码段如下:

switch(call)

   {

      case SYS_SOCKET:

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
socket.c是Linux内核实现socket通信的核心代码文件之一。它主要包含了socket的创建、绑定、监听、连接等基本操作的实现。下面对socket.c代码进行简要解读: 1. `sys_socketcall()`函数:该函数是socket通信的入口函数,用于根据用户传入的参数调用相应的socket操作函数,例如创建socket、绑定socket、监听socket、连接socket等。 2. `sys_socket()`函数:该函数用于创建一个新的socket,并返回socket的文件描述符。函数中会调用`sock_create()`函数创建一个新的socket对象,然后将其加入到socket文件系统中,并返回文件描述符。 3. `sys_bind()`函数:该函数用于将一个socket绑定到一个具体的网络地址上,以便于其他进程能够访问该socket。函数中会调用`sock_map_fd()`函数将socket文件描述符与socket对象进行关联,然后调用`sock_bind()`函数将socket绑定到指定的网络地址上。 4. `sys_listen()`函数:该函数用于将一个socket设置为监听状态,从而可以接受客户端的连接请求。函数中会调用`sock_listen()`函数将socket设置为监听状态,并在socket对象中保存监听队列信息。 5. `sys_accept()`函数:该函数用于接受一个客户端的连接请求,并返回一个新的socket文件描述符,用于与该客户端进行通信。函数中会调用`sock_alloc()`函数创建一个新的socket对象,然后调用`sock_accept()`函数将新的socket与客户端进行连接,并返回新的socket文件描述符。 6. `sys_connect()`函数:该函数用于向指定的服务端发起连接请求。函数中会调用`sock_create()`函数创建一个新的socket对象,然后调用`sock_connect()`函数向服务端发起连接请求。 以上是对socket.c代码的简要解读,具体的实现细节还需要深入研究。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值