linux socket 分析 2

starting /etc/init/network.conf.sh
reg_sig_handler : done sig 1
reg_sig_handler : done sig 14
reg_sig_handler : done sig 13
srpc_start:680:: start a TCP srpc server!

 ------> family is 2 ,type is 2 ,protocol is 0

 ------> family is 2 ,type is 1 ,protocol is 0

 ipv4 inet_create : ------>

 ipv4 inet_create : ------>

 -------> sock_map_fd

 -------> sock_map_fd
starting /etc/init/ntp.conf.sh
__srpc_socket:49:: srpc create TCP socket:3

 -------> sys_bind

 -------> sys_listen
__srpc_task_tcp:471:: srpc service running ...
starting /etc/init/pagecache_limit.conf.sh

 -------> 33333 sys_accept

 -------> sys_accept4

 -------> 33333 sys_accept

 -------> sys_accept4
starting /etc/init/rpcd.conf.sh
Launch the rpc service...

 

SYSCALL_DEFINE3(bind, int, fd, struct sockaddr __user *, umyaddr, int, addrlen)
{
 struct socket *sock;
 struct sockaddr_storage address;
 int err, fput_needed;


 printk("\n -------> %s \n",__FUNC__); /// ------> sys_bind


 sock = sockfd_lookup_light(fd, &err, &fput_needed);

...

}

 

SYSCALL_DEFINE2(listen, int, fd, int, backlog)
{
 struct socket *sock;
 int err, fput_needed;
 int somaxconn;
 printk("\n -------> %s \n",__FUNC__);

....

}

 

SYSCALL_DEFINE3(accept, int, fd, struct sockaddr __user *, upeer_sockaddr,
  int __user *, upeer_addrlen)
{
 printk("\n -------> 33333 %s \n",__FUNC__); /// ------> 33333 sys_accept

 return sys_accept4(fd, upeer_sockaddr, upeer_addrlen, 0);
}

/*
 * For accept, we attempt to create a new socket, set up the link
 * with the client, wake up the client, then return the new
 * connected fd. We collect the address of the connector in kernel
 * space and move it to user at the very end. This is unclean because
 * we open the socket then return an error.
 *
 * 1003.1g adds the ability to recvmsg() to query connection pending
 * status to recvmsg. We need to add that support in a way thats
 * clean when we restucture accept also.
 */

SYSCALL_DEFINE4(accept4, int, fd, struct sockaddr __user *, upeer_sockaddr,
  int __user *, upeer_addrlen, int, flags)
{
 struct socket *sock, *newsock;
 struct file *newfile;
 int err, len, newfd, fput_needed;
 struct sockaddr_storage address;
 printk("\n -------> %s \n",__FUNC__);
 if (flags & ~(SOCK_CLOEXEC | SOCK_NONBLOCK))
  return -EINVAL;

...

err = sock->ops->accept(sock, newsock, sock->file->f_flags);

...

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Linux Socket 调试助手(Linux Socket Debug Assistant)是一种用于调试和分析 Linux 系统中的网络套接字(Socket)相关问题的工具。它可以帮助开发人员快速定位和解决网络通信问题,提高程序的稳定性和性能。 具体来说,Linux Socket 调试助手可以提供以下功能和特点: 1. 抓包功能:它可以监听和捕获网络数据包,并将其显示出来,使开发人员可以实时查看和分析实际的网络通信情况。这对于发现和排查网络通信中的问题非常有帮助,比如数据丢失、延迟过高等。 2. 网络统计功能:它可以统计并显示网络通信的一些关键指标,比如网络吞吐量、连接数等,帮助开发人员全面了解网络通信的性能状况。 3. 错误追踪功能:它可以记录和显示程序中的网络相关错误信息,如连接超时、连接断开等。这可以帮助开发人员快速定位问题,修复潜在的 Bug。 4. 网络分析功能:它可以解析网络数据包的内容,提供丰富的协议解析功能,帮助开发人员深入理解网络通信过程,进一步优化程序的设计和实现。 总之,Linux Socket 调试助手是一款强大的工具,能够提供全面的网络调试和分析支持,帮助开发人员快速定位和解决网络通信问题,提高程序的质量和性能。使用它可以节省大量的调试时间和精力,同时提升开发效率。 ### 回答2: Linux Socket调试助手是一种用于帮助开发人员在Linux操作系统下调试网络Socket程序的工具。它提供了一系列的功能和工具,帮助用户定位和解决网络通信问题。 首先,Linux Socket调试助手具备网络抓包功能,可以捕获和分析网络数据包。用户可以通过抓包分析网络流量,查看数据包的内容、源地址、目标地址等信息,以便找出网络通信中可能存在的问题。 其次,在调试过程中,可使用Linux Socket调试助手来监控网络连接的建立与关闭,以及数据的发送与接收的过程。通过对连接状态和数据传输的实时监测,用户可以及时发现和排查问题,提高调试效率,减少调试时间。 此外,Linux Socket调试助手还提供了日志记录功能,可以记录网络通信过程中的关键信息,如连接建立时间、数据发送和接收时间等。通过对日志的分析,用户可以准确地定位问题所在,从而更快地解决网络通信故障。 最后,Linux Socket调试助手支持多种网络协议,包括TCP、UDP等。用户可以根据自己的需要选择使用不同的协议进行调试。同时,它还支持多线程调试,可以同时监控多个Socket连接,提高了调试的灵活性和效率。 总之,Linux Socket调试助手是一款强大的工具,能够帮助开发人员解决网络通信问题。它具备网络抓包、连接监控、日志记录等功能,能够加快故障定位和解决问题的速度,提高了开发效率。对于需要进行网络通信调试的开发人员来说,Linux Socket调试助手是一款不可或缺的工具。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值