我正在尝试不断地将套接字从一个进程转移到另一个进程。我在主进程上使用 WSADuplicateSocket ,它总是可以正常工作。然后我在子进程上调用 WSASocket。但是,我偶尔会从 WSASocket 收到 WSAEINVAL 错误。
我检查了 lpWsaProtocolInfo 参数,它总是很好。所以我真的不知道这个错误是怎么发生的?
掌握:
int err = WSADuplicateSocket( sockFd, childPID,
(LPWSAPROTOCOL_INFO)sockInfo );
孩子:
LPWSAPROTOCOL_INFO lpWsaProtocolInfo =
(LPWSAPROTOCOL_INFO)malloc( sizeof( *lpWsaProtocolInfo ) );
memcpy( lpWsaProtocolInfo, sockInfo, sizeof( *lpWsaProtocolInfo ) );
sockFd = WSASocket( AF_INET, SOCK_STREAM, IPPROTO_TCP, lpWsaProtocolInfo,
0, 0 );