标准库 调用的是: StdLib\EfiSocketLib\Socket.c
stdlib 起一个桥梁作用,实质还是调用 MdeModulePkg\Universal\Network\Tcp4Dxe
bind 最主要就是做了一次标记:
//
// Mark this socket as bound if successful
//
if ( !EFI_ERROR ( Status )) {
pSocket->State = SOCKET_STATE_BOUND;
pSocket->errno = 0;
}
listen 的实现在EslSocketListen
d:\ets-poccc\StdLib\EfiSocketLib\Socket.c 2587
其实质是调用
//
// Initiate the connection attempt listen
//
Status = pSocket->pApi->pfnListen ( pSocket );
如果没有出错, 则标记为listen state
最终还是用的:
d:\ets-poccc\MdeModulePkg\Universal\Network\Tcp4Dxe\Tcp4Main.c
Tcp4Accept()
accept 就是拿到远程的地址信息
receive 拿到存放数据的地址, 从一个个包里面拿出内容