- 締切済み
接続されているコンピュータ名取得(MFC)
CSocketクラスを使用して、 簡易チャットを作成しました。 IPアドレスコントロールに、 対象コンピュータのIPアドレスを打ち込んで チャットをしています。 対象コンピュータのIPアドレスの打ち込みを 省略して、接続されているコンピュータとチャットをしたいのですが、どうすればいいでしょうか? コンピュータ名一覧を取得できる関数はありますか? 使用OS:Windows 開発環境:Visual C++.NET MFC です。 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
回答No.1
お礼
回答ありがとうございました。 WNetEnumResource gethostbyname parent.lpRemoteName = "WORKGROUP"; parent.lpProvider = "Microsoft Windows Network"; WNetOpenEnum 等を使用して作ることができました。 感謝します。
補足
回答ありがとうございます。 いくつか質問したいことがあります。 Dns::GetHostByName(); というのは、MFCでも使用可能でしょうか? ------------------------------------------- 以下のソースを使用して コンピュータ名を取得(NetBios名らしい) しました。 しかし、Socket.Connect(Servername,Port) としても接続できませんでした。 他のコンピュータに接続するには、 Socket.Connect(IPAddress,Port) のようにするしかないのでしょうか? ------------------------------------------- void CChatDlg::GetServerName() { LPSERVER_INFO_101 pBuf = NULL; LPSERVER_INFO_101 pTmpBuf; DWORD dwLevel = 101; DWORD dwPrefMaxLen = -1; DWORD dwEntriesRead = 0; DWORD dwTotalEntries = 0; DWORD dwTotalCount = 0; DWORD dwServerType = SV_TYPE_SERVER; // すべてのサーバー DWORD dwResumeHandle = 0; NET_API_STATUS nStatus; LPTSTR pszServerName = NULL; DWORD i; // このサーバーは、既定のローカルコンピュータではない。 // if (__argc == 2) pszServerName=__argv[1]; // // 情報レベル 101 を指定して NetServerEnum 関数を //呼び出し、すべてのサーバーに関する情報を取得する。 // nStatus = NetServerEnum((LPCWSTR)pszServerName,dwLevel,(LPBYTE *) &pBuf,dwPrefMaxLen,&dwEntriesRead,&dwTotalEntries,dwServerType,NULL,&dwResumeHandle); // // 呼び出しが成功した場合、 // if ((nStatus == NERR_Success) || (nStatus == ERROR_MORE_DATA)) { if ((pTmpBuf = pBuf) != NULL) { // // 各エントリをループ処理し、 // すべてのサーバータイプのデータを出力する。 // for (i = 0; i <dwEntriesRead; i++) { if (pTmpBuf == NULL) { break; } char ConvStr[128]; DWORD dwLen = WideCharToMultiByte(CP_ACP,0,pTmpBuf->sv101_name,11,ConvStr,sizeof(ConvStr),"x",NULL); ConvStr[dwLen]='\0'; List.SetArry(LIST_ME); List.AddString(ConvStr); // // サーバーがドメインコントローラかどうかをチェックする // ドメインコントローラだった場合、PDC か BDC か識別する。 // // // サーバーに関連付けられているコメントも出力する。 // pTmpBuf++; dwTotalCount++; } // 利用可能なエントリの一部が列挙されていない場合、 // そのことを出力し、実際に列挙されたエントリの数と、 // 利用可能なエントリの総数を出力する } } } ------------------------------------------------ よろしくお願いします。