
在设备里运行了一个adbd。
trinket:/ # ps -efl | grep adbd
root 1753 1 0 14:18:53 ? 00:00:14 adbd --root_seclabel=u:r:su:s0
adbd 的入口
tcp 通信中的 server 创建的大致流程
tcp 编程的 server 端
- 1) 调用 socket()函数来创建 socket
- 2) 调用 setsockopt()函数来设置相关属性
- 3) 调用 bind()函数绑定 IP 和端口信息到 socket 上
- 4) 调用 listen()函数来开启监听
- 5) 调用 accept()函数来接受 client 端的通信请求
- 6) 调用 send()/write()函数来发送数据;调用 reve()/read()函数来接受数据
- 7) 调用 close()/shutdown()函数来关闭通信
Cross Reference: /system/core/adb/Android.mk (androidxref.com)
LOCAL_SRC_FILES := \
daemon/main.cpp \
daemon/mdns.cpp \
services.cpp \
file_sync_service.cpp \
framebuffer_service.cpp \
remount_service.cpp \
set_verity_enable_state_service.cpp \
shell_service.cpp \
shell_service_protocol.cpp
这几个文件编译出来的adbd.
adbd 的入口在
system/core/adb/daemon/main.cpp



server_socket_thread()函数主要就是处理 tcp 通信中 server 端的初始化,
先概括一下函数内部的处理逻辑:
a) 首先函数进入一个大的死循环中,然后通过调用 network_inaddr_any_server()函数来
创建 server 端的 socket.
b) 调用 adb_socket_accept()来接受 client 端的请求信息,然后 fd.用于 tcp 的通信
c) 最后就调用 register_socket_transport()函数来注册 TCP 传输事件.
adbd 登录添加密码
--- core/adbd/services.c
+++ core/adbd/services.c
-#define SHELL_COMMAND "/bin/sh"
+#define SHELL_COMMAND "/bin/login"
1102

被折叠的 条评论
为什么被折叠?



