ソケットをあるプロセスから別のプロセスに絶えず転送しようとしています。私は常に正常に動作するマスタープロセスで 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 );