現在C++でWinpcapを使用し、パケットのキャプチャをとるプログラムを作成したいと考えています。
http://d.hatena.ne.jp/d-kami/20080730を参考に作成しているのですが、
struct ether_headerがどこで宣言されているかわからず、使用することができません。
上記のサイトはおそらくLinux用だと思うのですが、Windows上で動かすためにはなんというヘッダファイルを読み込む必要があるのでしょうか?

A 回答 (2件)

開発環境が書いてありませんが、VC++を使用するのであれば、参考に挙げているURLではなく、WinPcapに付属するドキュメントにサンプルが載っているので、そちらを参考にしたほうが良いと思います。

 参考のURLはWinPcapを使用した例ではないと思いますが。 ちなみ私はドキュメントに載っていたサンプルを参考にして、VC++2005でパケットの送受信のプログラムを書きました。
    • good
    • 0

FAQにはボーランドの開発環境ならどうする、.NETならどうするって解説があったと思いますが、お使いのコンパイラなどを明確にしないと回答難しいのではないかな。



Cygwin環境でならLinuxとほぼ同じ感じでできるそうです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qキャプチャソフトの「ハードディスク領域の確保」とはどういう意味ですか?

あらかじめインストールされているキャプチャソフトがうまく働かないので
http://www.vector.co.jp/soft/cmt/win95/art/se182576.html
ここあるビデオキャプチャというソフトを使おうと思ったのですが
このソフトの中の「ハードディスク領域の確保」という項目の部分がよくわかりません
「あらかじめ確保するハードディスクの容量を指定してください!すでに存在するファイルは上書きされます」と書いてあるだけで説明も何もないので、調べてみたのですが意味がよくわからなかったので
意味がわかる方が居られたら教えていただけないでしょうか?

Aベストアンサー

キャプチャーした結果を書き込むハードディスク容量が必要ですね。
無制限に使われると困るので容量の上限を指定するわけです。
ファイル(またはフォルダー)名はそのソフトが特有の名称をつけているのでしょう。
2回インストールした場合2回目には前の同名の領域が上書きされる分けです。
逆に言えば同名の領域があれば先に消すとも考えられます。

Qパケットキャプチャについて(WinPcap_)

よろしくお願いします。
下記URLでWinPcapを利用したパケットキャプチャの方法が記載されています。
http://codezine.jp/a/article.aspx?aid=126

(1)AirH等無線LAN機器のパケットキャプチャの実行に失敗するのですが、WINPCAPは無線LANは非対応なのでしょうか?通常のLAN接続はキャプチャできます。

(2)WireShark(旧Ethereal)ではリアルタイムにパケットキャプチャが実行されるのですが、上記URLのやり方では、リアルタイムにパケットキャプチャできないのと、大量のパケットキャプチャを行うと、パケットの取り漏れが発生する場合があります。リアルタイムでかつパケットロスのないキャプチャ方法をご教授していただけないでしょうか?

Aベストアンサー

まずLANカード等が「プロミスキャスモード」可能なもの
でなければキャプチャ(スニファ)できません。

それよりも、無線LANのパケットを受信する必要があるのですか?

Qキャプチャ

WEBのキャプチャってどんな意味があるんですか?

Aベストアンサー

 BIG○OBE、なら、画面をキャプチャできるが、ロゴを入れないと保証しないそうだ。 その時間の情報を記憶できる、JPEGで。 
 + FastStone Captureと言うツールが有る。これも同様にキャプチャできる。webは無理か。 

Qプログラミング言語Cとプログラミング言語C++

プログラミング言語Cとプログラミング言語C++の違いって何ですか?
あと、プログラミング言語C++についていくつか質問があります。
#include <iostream>
using namespace std;
void main(){
cout << "Hello world!" << endl;
}
このプログラムについて質問なんですが、iostreamってプログラミング言語Cで言うstdio.hのことですか?
using namespace stdって何ですか?
あと、 cout <<"Hello world!"って何ですか?

Aベストアンサー

> プログラミング言語Cとプログラミング言語C++の違いって何ですか?

C++は、Cのほぼ全ての仕様を含み、クラス、テンプレート、例外処理など大幅に機能拡張した言語です。
細部の違いが知りたければ、下記を参照してください。
http://www.kijineko.co.jp/tech/cpp2c

> このプログラムについて質問なんですが、iostreamってプログラミング言語Cで言うstdio.hのことですか?

違います。
C++にもstdio.hがありますし、cstdioというヘッダもあります。

iostreamヘッダは、cin, cout, cerr, clogとそれらのワイド文字版を宣言するためのものです。
ですので、iostreamヘッダで宣言・定義される関数やクラスを使うだけでは一般的なファイルの操作はできませんし、sprintfやsscanfに相当するものもありません。
また、removeやrenameなど、ストリームとは関係のない操作も含まれていません。

> using namespace stdって何ですか?

「using指令」によって、名前空間stdの中にある名前を大域的名前空間でも使えるようにするものです。
せっかく名前空間を分けているのに、それを無効にしてしまうような機能ですから、安易にusing指令を使うのはお勧めしません。

> あと、 cout <<"Hello world!"って何ですか?

標準出力に対して、文字列"Hello, world!"を出力します。
ちなみに、endlは、改行を出力したあと、バッファにたまった内容を実際に吐き出します(フラッシュします)。単なる改行の出力ではないので要注意です。

C++の仕様は結構大きい方なので、遭遇した記述をひとつひとつ質問していたのではキリがありません。
まずは入門書を一冊読み、わからない用語等については、処理系のリファレンスを読むか、ネットで検索するなどしてください。

> プログラミング言語Cとプログラミング言語C++の違いって何ですか?

C++は、Cのほぼ全ての仕様を含み、クラス、テンプレート、例外処理など大幅に機能拡張した言語です。
細部の違いが知りたければ、下記を参照してください。
http://www.kijineko.co.jp/tech/cpp2c

> このプログラムについて質問なんですが、iostreamってプログラミング言語Cで言うstdio.hのことですか?

違います。
C++にもstdio.hがありますし、cstdioというヘッダもあります。

iostreamヘッダは、cin, cout, cerr, clogとそれらのワイド...続きを読む

Qキャプチャして送る

キャプチャして送るってどういう意味ですか?またその方法も教えてください。(><)

Aベストアンサー

こんばんは
チョッと質問内容だけでは、何のキャプチャなのか不明ですが。。。。

おそらく、画面のキャプチャだと信じて書きますね。
◆専用アプリを使う方法
http://www.vector.co.jp/soft/win95/art/se118008.html
こちらを使用してください。


◆専用アプリを使わない方法
1)キャプチャを取りたいモノを画面上に表示させます。
2)”Alt”を押しながら、”PrintScreen”(Deleteキーの上辺り)を押します。

※タスクバーや時計なども入れたい場合は、”PrintScree”だけを押してください。

3)スタート >> プログラム >> アクセサリ >> ペイント を起動します。
4)編集 >> 貼り付け 選択します。
5)保存します。

QC++/CLIで、アンマネージC++のDLLを使用する方法

こんにちは。
C++/CLIのプログラムで、アンマネージC++のDLLを使用したいと考えています。
ネット上をいろいろ調べたのですが、具体的な手段がわかりません。
見よう見まねで以下のようにサンプルを作成したのですが、コンパイルすら通る状況になりません。
かなり基本的な問題がありそうで申し訳ないのですが、下記の問題点を教えていただけないでしょうか。

また、参考になりそうなサイトなどありましたら教えていただけると大変助かります。

■アンマネージC++のDLL
VC++6.0で、以下のように、単にデバッグ文字列を書き出すだけのDLL関数を作成しました。
(このDLLが使用できることは他のVC++6.0プロジェクトで確認済みです)
/*-----Func.h-----*/
#ifndef __FUNC_H__
#define __FUNC_H__

AFX_EXT_CLASS void WINAPI ShowMessage();

#endif//__FUNC_H__

/*-----Func.cpp-----*/
#include "StdAfx.h"
#include "Func.h"
#include <stdio.h>

void WINAPI ShowMessage()
{
CString str = "This is The Message from DLL Func!\n";
OutputDebugString(str);
}

■C++/CLI でのDLL使用
Visual Studio2008にて、C++のCLRプロジェクトを作成して、以下のようにDLLを使用する準備を行いました。
1.ソリューションエクスプローラのヘッダフォルダに、Func.hを追加
2.プロジェクトのフォルダに、上記で作成したFuncのDLLとLIBファイルを置く。
3.プロジェクトの「プロパティ > C/C++ > プリプロセッサ > プリプロセッサの定義」に、"_AFXDLL"を追加
4.mainクラスのソースに以下を記述
/*----------*/
using namespace System;
#include "Func.h"
#using "ManagedDllApp.dll"

int main()
{
ShowMessage();
return 0;
}
/*----------*/

この状態でコンパイルすると、
「エラー3error C2144: 構文エラー : 'void' は ';' によって先行されなければなりません。d:\xxx\Func.h4Console
」等、Func.h周りで複数のエラーが出ます。
また、Func.hをインポートしないでコンパイルすると、
「エラー3fatal error C1113: #using が 'd:\xxx\manageddllapp.dll' で失敗しました。」と、Dllでエラーが出ます。

よろしくお願いいたします。

こんにちは。
C++/CLIのプログラムで、アンマネージC++のDLLを使用したいと考えています。
ネット上をいろいろ調べたのですが、具体的な手段がわかりません。
見よう見まねで以下のようにサンプルを作成したのですが、コンパイルすら通る状況になりません。
かなり基本的な問題がありそうで申し訳ないのですが、下記の問題点を教えていただけないでしょうか。

また、参考になりそうなサイトなどありましたら教えていただけると大変助かります。

■アンマネージC++のDLL
VC++6.0で、以下のように、単にデ...続きを読む

Aベストアンサー

 こんばんは。御礼頂きました。
 Func.hの中にインクルードし忘れがある様です。準備が出来たら、必ず「ソリューションのリビルド」をして下さい。
 以下は DLL->VC6.0Pro CLR->VC2005Pro で確認しています。

/*-----Func.h-----*/
#ifndef __FUNC_H__
#define __FUNC_H__

#include"afxver_.h"//此れと
#include"afxv_dll.h"//此れと
#include<windows.h>//此れをインクルード

AFX_EXT_CLASS void WINAPI ShowMessage();

#endif //__FUNC_H__

//以下はCLRアプリ側

/*-----stdafx.h-----*/
// stdafx.h : 標準のシステム インクルード ファイルのインクルード ファイル、または
// 参照回数が多く、かつあまり変更されない、プロジェクト専用のインクルード ファイル
// を記述します。
//
#pragma once

// TODO: プログラムに必要な追加ヘッダーをここで参照してください。
#include"func.h"
#pragma comment(lib, "libの名前.lib")

/*-----clrconsole.cpp-----*/
// clrconsole.cpp : メイン プロジェクト ファイルです。

#include "stdafx.h"

using namespace System;

int main(array<System::String ^> ^args)
{
::ShowMessage();
return 0;
}

 こんばんは。御礼頂きました。
 Func.hの中にインクルードし忘れがある様です。準備が出来たら、必ず「ソリューションのリビルド」をして下さい。
 以下は DLL->VC6.0Pro CLR->VC2005Pro で確認しています。

/*-----Func.h-----*/
#ifndef __FUNC_H__
#define __FUNC_H__

#include"afxver_.h"//此れと
#include"afxv_dll.h"//此れと
#include<windows.h>//此れをインクルード

AFX_EXT_CLASS void WINAPI ShowMessage();

#endif //__FUNC_H__

//以下はCLRアプリ側

/*-----stdafx.h-...続きを読む

Q携帯でとった動画をPCで静止画連続キャプチャしたいです。

携帯でとった動画をPCで静止画連続キャプチャしたいです。


携帯でキャプチャすればいいのですが
今の携帯にキャプチャ機能も無くて

PCでキャプチャしたいと考えました

一時停止してキャプチャすると
ベストタイミングは難しいので
連続キャプチャをしたいと思い

さっそく
GOMプレイヤーで連続静止画キャプチャができると知り
携帯の動画をGOMプレイヤーで再生できるように変換して
キャプチャまでしたんですけど

どうも画質が悪く静止画として満足いきませんでした…


携帯でとった動画を
劣化を少なく

PCで連続キャプチャするのはどうしたらいいでしょうか??

詳しいかた教えてください☆

PCはWindowsXPを使っています。

Aベストアンサー

GOMの場合JPEGでキャプチャするので劣化は避けられません。
・・・と、いうより、動画からのキャプチャはあまり画質はよくないですよ。

SMプレーヤーではPNGでキャプチャしてくれますが、容量が大きくなります。
http://www.gigafree.net/media/codecplay/smplayer.html
・・が、連続はできたかどうかわかりません。

QC++言語でのWinsock2を使用したパケットモニタの作成

こんにちは
現在Winsock2を使用したパケットモニタを作成しています
パケットを受信できるプログラムは作成することができましたが、TCPパケットが期待した順番通りに受信できません
例えば、3WAYハンドシェイクのパケットのやり取りで、期待しているパケットの受信順は

1. host ---> net: SYN
2. host <--- net: SYN,ACK
3. host ---> net: ACK

ですが、パケットモニタでは以下の順番でパケットを受信しています

1. host ---> net: SYN
2. host ---> net: ACK
3. host <--- net: SYN,ACK

hostから送信されるパケットが先に受信されているような感じですが、これらを時刻順に受信するオプションなどはあるのでしょうか?
もしあるならどのように設定すればよろしいのでしょうか?

(ソケットなどの設定内容)
初期化
 WSADATA wsd;
 WSAStartup(MAKEWORD(2, 2), &wsd)

ソケット作成
 SOCKET sock;
 sock = WSASocket(AF_INET, SOCK_RAW, IPPROTO_IP, NULL, 0, WSA_FLAG_OVERLAPPED)

無差別受信モードに設定
 int op = RCVALL_ON;
 WSAIoctl(sock, SIO_RCVALL, &op, sizeof(op), NULL, 0, &dword, NULL, NULL)

パケットの受信
 WSABUF wsb;
 DWORD len = 0;
 DWORD flag = 0;
 WSARecv(sock, &wsb, 1, &len, &flag, NULL, NULL)

こんにちは
現在Winsock2を使用したパケットモニタを作成しています
パケットを受信できるプログラムは作成することができましたが、TCPパケットが期待した順番通りに受信できません
例えば、3WAYハンドシェイクのパケットのやり取りで、期待しているパケットの受信順は

1. host ---> net: SYN
2. host <--- net: SYN,ACK
3. host ---> net: ACK

ですが、パケットモニタでは以下の順番でパケットを受信しています

1. host ---> net: SYN
2. host ---> net: ACK
3. host <--- net: SYN,ACK

host...続きを読む

Aベストアンサー

回答ではないです。

Ethereal とかのフリーのキャプチャソフトでも、同じように表示されるか確認してみたらどうでしょう?
また、↑はソースも参照できますから、それを漁ってみては。

Qキャプチャボードについて

キャプチャボードは対応解像度のほとんどが720×520あたりまでで、
映像の解像度が画面の解像度よりも少ない場合には解像度の高いキャプボを買っても意味がないとお聞きしたのですが、
PS2のD4でテレビゲーム、PS3のHDMIの1080iでゲームをする場合には対応解像度の高いキャプチャーボードを買う意味はあるのでしょうか?
テレビの解像度は1366×768です。

また、
http://earthsoft.jp/PV4/tech-specification.html​
こちらのキャプチャボードはかなりのスペックが必要らしいのですが、

OS:VistaHP32bit
CPU:core2のE6700
グラボ:じふぉの8800GTS
メモリ:2GBのデュアル

このスペックで快適にキャプチャすることは可能でしょうか。
以上の点宜しくお願い致します。

Aベストアンサー

たびたび失礼。

う~ん、手元に取っておくソース(原本)としてならば、
やはり、きれいになると思います。

そして、当たり前になりますが、本来の大きさに表示させて観るなら、
元から大きく録っておいた方がよりきれいでしょう。

しかし、結局のところ、用途がそれならば、
WEB 上から観るには、際立った体感の差までは感じないと思います。
視聴側の環境にも左右されますから・・・・。
あとは、やはり、実際にお試しになってどうか、というところだと思います。


ところで、こんなのもありますので、ご参考にどうぞ。
こちらは Vista 対応となっていますが、PCI-Express×1 スロット用です。
先週末には、アキバで結構見かけました。

http://www.watch.impress.co.jp/akiba/hotline/20070721/etc_monsterxpre.html

決定的な回答を出せずに申し訳ない。
いずれにせよ、ご健闘を祈ります。

QVisual C++を使用するには,C++の知識は必要?

Visual C++ を使用する必要が生じたのですが,C言語の知識しかなく,
VC++を使用するにあたり,新たにC++を勉強しなければならないか分かりません。
C++を勉強してから,VC++を勉強し始めるべきなのでしょうか?
また,もしC++の勉強をしなければならない場合,使用する参考書として「独習C++」を考えているのですが,この参考書で事足りるでしょうか?
回答よろしくお願いします。

Aベストアンサー

ANo.1の方に同感です。

私はMS-DOSでのC言語からVC++へジャンプしました。

VC++を理解するということは
 1.C++という言語
 2.windowsOS,API
 3.MFC
を理解するということです。

私のとっかかりの本は、3冊のシリーズで
 1.Windowsプログラミングについて
 2.C++について
 3.MFCについて(だった思う)
に分かれており、C言語の知識とwindowsのアプリを触った経験があれば順を追って素直に理解できるものでした。
#処分してしまったので正しい書籍名はわかりませんが、クリーム色のカバーでした。

ただ、これはあくまで入門書で、その後C++に関する本、MFCに関する本、WIN32APIに関する何冊か読まないと、やはり仕事はできません。


人気Q&Aランキング

おすすめ情報