vsock记录

可是我看虚拟机的reboot_p_srv中没去检测vsock送来的cid,reboot_hyper_an通过什么实现发送到特定虚拟机呢?谁去处理cid了? 

A:
vsock 的通信机制是这样的:

- 客户端(reboot_hyper_an.c)在 connect 时,指定了目标虚拟机的 cid 和端口号。
- 这一步由 vsock 驱动和内核来处理,内核会把连接请求路由到对应 cid 的虚拟机、并交给那台虚拟机上监听对应端口(12345)的服务端进程(reboot_p_srv)。
- 服务端只需要监听端口,不需要关心是谁连过来的(不需要关心 cid),只要有连接就处理。

所以:
- “发送到特定虚拟机”这件事,是 vsock 协议和内核帮你做的,服务端不需要写代码去区分。
- 你在客户端指定了 cid,内核就会把数据送到那台虚拟机的服务端进程。
- 服务端只管处理收到的连接和消息,不需要知道对方的 cid。

总结:  
vsock 的“目标虚拟机选择”完全由客户端 connect 时指定的 cid 决定,内核自动路由,服务端无需关心。

posted @ 2025-07-01 14:42  老胡同学  阅读(53)  评论(0)    收藏  举报