次のC++コードを使用して、IPv4文字列アドレスからsockaddr_in構造体にデータを入力しようとしています。
// WSAStringToAddress
struct sockaddr_in sock;
int addrSize = sizeof( struct sockaddr_in );
memset( &sock, 0, addrSize );
sock.sin_family = AF_INET;
rc = WSAStringToAddress( (LPWSTR) "192.168.0.1",
AF_INET,
NULL,
(LPSOCKADDR) &sock,
&addrSize );
if ( rc != 0 )
{
rc = WSAGetLastError();
printf( "WSAStringToAddress: error=[%d]\n", rc );
}
WSAEINVALであるエラーコード10022で失敗しています。http://msdn.microsoft.com/en-us/library/windows/desktop/ms742214%28v=vs.85%29.aspxには、 sockaddr_inのアドレスファミリがAF_INETに設定されていない場合、または私が明確に行ったAF_INET6。
Visual C ++ 2008ExpressEditionをWindowsServer2008 R2 SP1で実行していますが、Windows XP / Windows Server 2000以降の下位互換性が必要なため、新しいアドレス変換機能を使用していません。
誰かがこの問題を解決する方法を知っていますか/私のコードの何が問題になっていますか?あなたが与えることができるどんな解決策もありがたいです:D
編集:WSAStringToAddressAを使用すると、tcharの代わりにASCII文字を使用できることがわかりました