• 締切済み

接続されているコンピュータ名取得(MFC)

CSocketクラスを使用して、 簡易チャットを作成しました。 IPアドレスコントロールに、 対象コンピュータのIPアドレスを打ち込んで チャットをしています。 対象コンピュータのIPアドレスの打ち込みを 省略して、接続されているコンピュータとチャットをしたいのですが、どうすればいいでしょうか? コンピュータ名一覧を取得できる関数はありますか? 使用OS:Windows 開発環境:Visual C++.NET MFC です。 よろしくお願いします。

みんなの回答

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

Dns::GetHostByName(); Dns::Resolve(); とか 勘違いしてたらすみません

thulala
質問者

お礼

回答ありがとうございました。 WNetEnumResource gethostbyname parent.lpRemoteName = "WORKGROUP"; parent.lpProvider = "Microsoft Windows Network"; WNetOpenEnum 等を使用して作ることができました。 感謝します。

thulala
質問者

補足

回答ありがとうございます。 いくつか質問したいことがあります。 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++; } // 利用可能なエントリの一部が列挙されていない場合、 // そのことを出力し、実際に列挙されたエントリの数と、 // 利用可能なエントリの総数を出力する } } } ------------------------------------------------ よろしくお願いします。

関連するQ&A

  • クライアントのホスト名取得方法

    自社内のクライアントコンピュータのホスト名を取得するコマンドまたはプログラミング(VB)を教えてください。よく巷にあるツールを使うとIPアドレスから生死確認、ホスト名取得がありますがあれがどのようにやっているのかわかりません。生死確認はpingだと思うのですが、ホスト名をどのようにして取得しているかを知りたいです。自社の出勤管理にコンピュータ名(ホスト名)の一覧を取得したいと考えています。対象コンピュータはWindowsで、管理コンピュータもWindowsです。よろしくお願いします。

  • MFCの参考書を探しています

    現在、Visual C++のMFCを勉強しています。(開発環境はVisual Studio2008) 参考にしているのは「標準講座MFC6.0」と「スタンダードVisual C++」という本です。 ただどちらの本にもドキュメント・ビュー・アーキテクチャを使用したサンプルプログラムが少なく、またその詳細についてはあまり触れられていませんでした。 やはりMFCで開発をするにはその辺を知っておくべきと思いますので、上記についての詳細やサンプルプログラムを多く載せた参考文献・サイト等ありましたら教えてください。 話は少しズレますが、MFCに関する本やサイトって少ないですよね。MFCは今後、廃れていくのでしょうか?今後のWindowsの開発は.NET系の開発言語に移っていくのでしょうか? どちらか片方に対するご意見・ご回答で構いませんので、よろしくお願いします。

  • SDKやMFCでの開発について

    私はサンデープログラマなので趣味でSDKなどで簡単なプログラミングをしています。MFCにも挑戦しようかと思っているところなのですが、いかんせんVisualと名前がついているのにSDKもMFCもぜんぜんVisualではありませんので開発にかなり時間がかかってしまいます。ダイアログベースでのプログラミングがあるかとは思いますが、コントロールのインターフェースの制御などに制限があるように思えます。 ●やはりソフトハウスなどでは画面(ウィンドウ)を作るとき、 コントロールの位置など直接確認できないので、 その専門の人(画面を作る人たち)がいて、 コントロールの位置を設定して(CreateWidnow関数などのTop,Left引数の位置に座標を設定して) いちいちその度にビルドをし、コントロールの位置を確認して画面を制作しているのでしょうか? ●また、私はC#に興味があります。それはなぜかというと、SDKや特にMFCに比べて、やはりVBのように画面を作りやすくするため、VBのようなデザイン画面を取り入れたり、XMLなどを操作できるようにしたり、MFCのようにオブジェクト指向でWindowsの性能を最大限に引き出すことができる(まとまった一連の動作はオブジェクトで実行し、単機能の動作は直接APIにアクセスし実行することができる)VBとMFCとJAVAのいいところをすべて網羅した言語のように思えます。この認識は正しいのでしょうか?

  • 途中からMFCを使用したい

    はじめて質問させていただきますVisual C++初心者です。 現在Visual C++ 6.0で開発作業を行っていますが大変困っています。 前任者が「MFCを使用しない」でプロジェクトを作成していたのですが、前任者の退職により本作業を引き継ぐことになりました。 ほとんどAPIのみで作成されたいましたが、MFCを使用したいと考え、プロジェクト設定から「共通DLLでMFCを使用」にしたところ、リンカエラー(LNK2001)が続出しました。(恐らくAPI使用分だけ出ているのだと思います。) このように途中からMFCを使用する場合、簡単に設定変更できるものなのでしょうか。やはり、MFC使用でプロジェクトを作り直してからコードを移植していったほうが早いのでしょうか。 諸先輩方のご意見を参考にさせてください。宜しくお願い致します。

  • ネットワークに接続されているコンピューター

    ウィルスバスター2008を使用しています。 最近、ネットワークに接続されているコンピューターが出てきたのですが、わかっているのは、IPアドレスとMACアドレスのみ。コンピューター名 ネットワーク機器は不明です。 いちおう、例外ルールを追加するにはしていますが、無線LANのパトロールのたびに 接続されている機器が見つかっていること。一台から2台に増えて不安です。このままインターネットに接続していても大丈夫でしょうか?ご意見よろしくお願いします。

  • VC++6.0 MFC 日時指定コントロールの秒へのセットフォーカス

    VC++6.0 MFC 日時指定コントロールの秒へのセットフォーカス 以下の環境でプログラミングを実施しています。 開発環境:Visual Studio 6.0 言語:Visual C++ プロジェクト:MFCアプリケーション 日時指定コントロールのスピンを最初にクリックすると 時間が変化しますが、これを初期設定で秒にしたいのですが どうしたらいいのか全くわかりません。 教えてください!

  • コンピュータ機器の接続の拒否するには

    ウイルスバスター2008、ネットワークに接続されているコンピューターが下記の一覧に表示されます。の下記に 信頼済みでないコンピュータ/機器がネットワークに接続されています、 ステータス・・×未設定 IPアドレス・・1?2、1?8,0,1 コンピューター・・、、、、、 MACアドレス・・00:A?:B?:?7:?A:CC ここをクリックすると右の窓に詳細にコンピューター名「・・・」 (IPsドレス)は信頼されていません ネットワーク機器;ルータ  と表示されます 「例外ルールを追加する(B)をクリックしても 1時間毎にこの画面が出ます、対処として接続拒否にする方法ご伝授よろしく、

  • 信頼済みでないコンピュータが接続されています、と出るのですが…

    ウィルスバスター2008を使用して調べたら、「信頼済み出ないコンピュータが接続されています」と出ました。 なので、例外ルールを追加する、というのをクリックして接続されないようにしました。 念のため無線RANパトロールでパトロール開始し、「接続されていません」となったのを確認しました。 ですが、しばらくすると「信頼済み出ないコンピュータが接続されています」と警告がきました。 IPアドレスをみると、先ほど遮断したものと同じでした。 何度やっても繰り返しで、解決しませんでした。 いったいどうすればいいのでしょうか?

  • MFCでのZip圧縮方法

    MFCでxmlファイルをZip形式で圧縮したいので、方法があれば教えてください。 C#を使用する場合だと、Gzipstreamのクラスがありますが、MFCでそのクラスと同様のものはありますでしょうか。 MFCで上記のようなクラスがない場合でも、方法があればご教授ください。 なお、開発はVisual Studio 2010で行っています。

  • 「ネットワークに接続されてるコンピュータ」と表示されます

    WindowsXP、ウイルスバスター2008を使用しています。 タイトル通りなのですが、突然ウイルスバスターが開き「ネットワークに接続されてるコンピュータ」と表示されてしまいます。 そしてその中にはIPアドレスやMACアドレスなどが表示されています。 この現象というのはどういったことなのでしょうか? 誰かが私のコンピュータに進入しているこではありませんか? またこの現象、動作をとめることはできないでしょうか? 質問ばかりでスイマセン。 こういったことに関しては初心者なので、解決方法やご説明してくださるかたいらしたら、是非よろしくお願いいたします。