当前位置: 技术问答>linux和unix
请教个问题:linux内核中socket系统调用的几个方法如何将客户端和服务端链接起来的?
来源: 互联网 发布时间:2016-04-27
本文导语: 在里面,我看了sys_create方法只是建立了一个套接字结构,包括面向用户的socket和面向内核的sock结构。 sys_bind方法只是在服务端套接字上将用户空间设置的地址拷贝到了内核空间,并填入结构中。 sys_listen方法只是在...
在里面,我看了sys_create方法只是建立了一个套接字结构,包括面向用户的socket和面向内核的sock结构。
sys_bind方法只是在服务端套接字上将用户空间设置的地址拷贝到了内核空间,并填入结构中。
sys_listen方法只是在服务端套接字上设置了一个监听标记。
sys_accept方法只是从一个消息队列中获取客户端连接的控制信息。
而客户端套接字的sys_connect方法在《linux内核情景分析》中是从unix_socket_table中获取已经有的服务端地址。而内核代码中也确实是这样写的。
本人现在就有几个疑惑:
1.服务端的sys_accept去获取的消息队列中获取客户端连接的控制信息是哪个时候写进去的?怎么写进去的?
2、客户端的sys_connect方法所用到的unix_socket_table,是在客户端的机器里面,如何能够获得服务端的sock结构?书上说的是unix域,也就是说是在同一机器上的客户端和服务端。可能是他们的数据结构可以共享(我自己这样理解的)。
3、客户端在调用connect后,如何和服务端建立链接的动作,我现在还是没找到,呵呵~~~
请高人指点指点吧,谢谢~~~
sys_bind方法只是在服务端套接字上将用户空间设置的地址拷贝到了内核空间,并填入结构中。
sys_listen方法只是在服务端套接字上设置了一个监听标记。
sys_accept方法只是从一个消息队列中获取客户端连接的控制信息。
而客户端套接字的sys_connect方法在《linux内核情景分析》中是从unix_socket_table中获取已经有的服务端地址。而内核代码中也确实是这样写的。
本人现在就有几个疑惑:
1.服务端的sys_accept去获取的消息队列中获取客户端连接的控制信息是哪个时候写进去的?怎么写进去的?
2、客户端的sys_connect方法所用到的unix_socket_table,是在客户端的机器里面,如何能够获得服务端的sock结构?书上说的是unix域,也就是说是在同一机器上的客户端和服务端。可能是他们的数据结构可以共享(我自己这样理解的)。
3、客户端在调用connect后,如何和服务端建立链接的动作,我现在还是没找到,呵呵~~~
请高人指点指点吧,谢谢~~~
|
帮你看看吧, 但说实话,我也不是很懂
|
说这么多就是没看到有人去答
|
挺有意思的
幫頂!等待解答~
幫頂!等待解答~