RAWソケットの作成に失敗する原因

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
tlnlniri

RAWソケットの作成に失敗する原因

#1

投稿記事 by tlnlniri » 13年前

私は今ネットワークについて勉強しています。
そして、下のURLのソースコードを使わせてもらったのですが、
http://keicode.com/windows/winsock-packet-capture.php

// 生ソケットの作成
SOCKET hSocket = socket(AF_INET, SOCK_RAW, IPPROTO_IP);
で必ずINVALID_SOCKETが帰ってきてしまいます。

生ソケットの作成に失敗する原因はどんなことがあるのでしょうか?
(どこかのページでroot権限じゃないとできないと書いてあったのでAdministratorでログインしてやってみたのですができませんでした。)

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: RAWソケットの作成に失敗する原因

#2

投稿記事 by softya(ソフト屋) » 13年前

WSAStartup()の戻り値もチェックされたほうが良いのとWSAGetLastError()でエラー番号を表示してみて下さい。

「Windows Sockets Error Codes」
http://msdn.microsoft.com/en-us/library ... s.85).aspx

【追記】
こちらも参考に。
http://www.geekpage.jp/programming/wins ... tartup.php
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

tlnlniri

Re: RAWソケットの作成に失敗する原因

#3

投稿記事 by tlnlniri » 13年前

とりあえず戻り値を調べてみたので書いておきます。
WSAStartupは0を返してきました。
WSAGetLastErrorは10013を返してきました。

tlnlniri

Re: RAWソケットの作成に失敗する原因

#4

投稿記事 by tlnlniri » 13年前

10013のエラーについて調べてみたのですが、
http://yasuharu.net/admin/diary/?id=1138
の内容は関係ないのでしょうか?
私のPCもWindows Vistaです。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: RAWソケットの作成に失敗する原因

#5

投稿記事 by softya(ソフト屋) » 13年前

権限エラーですね。
調べてみましたがVista以降はSOCK_RAWが使えないようです。
代用手段がWindows WFPだそうですが私も詳しくないので申し訳ないのですがお答えできません。。

「Rawソケット on Vista - Decremented Blog」
http://blog.goo.ne.jp/yuh_goo/e/9cc65a1 ... afb4d8a6ba

と言うことでWinPcapの利用も検討されてはどうでしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

tlnlniri

Re: RAWソケットの作成に失敗する原因

#6

投稿記事 by tlnlniri » 13年前

ありがとうございます。
原因がわかってスッキリしました。
これからWinPcapでがんばってみたいと思います。

tlnlniri

Re: RAWソケットの作成に失敗する原因

#7

投稿記事 by tlnlniri » 13年前

うまく動作させることができたのでとりあえずやり方を書いておきます。
プロパティ→互換性で、
互換モードをWindowsXP(SP2)にして、
管理者としてこのプログラムを実行するにチェックを入れると動作しました。

閉鎖

“C言語何でも質問掲示板” へ戻る