3

私は C++ プログラマですが、Delphi ネットワーク ソケット ライブラリ Indy について質問があります。

基本的に、Microsoft が WinXP SP2 で raw ソケットを無効にして、TCP データをそれらを介して送信できないようにしましたが、これは Indy にも適用されますか? 私の友人の 1 人が、WinSock API を使用するのではなく、それを勧めました。

そうでない場合、WinPCap API を使用して生の TCP ソケットを使用する唯一の方法はありますか?

4

5 に答える 5

3

そうでない場合は、Delphi のシナプスがそうであることを知ってます。最新バージョンは現在 D2009 をサポートしており、積極的にサポートされています。

于 2009-11-02T21:36:19.590 に答える
2

他の回答からわかるように、ネットワーク プログラミングを簡素化する Delphi ライブラリが多数あります。ただし、知る限り、それらはすべて WinSock API (Windows では、他の OS の標準ソケット API) よりも使いやすいレイヤーを提供するため、WinSock API が実行できないことは何も実行できません。特に、生のソケット アクセスをサポートする場合とサポートしない場合がありますが、OS がソケットを介してデータを送信できない場合、ライブラリはエラーのみを返します。

最新の Windows OS バージョンでの raw ソケットの制限の詳細については、この MSDN ページ、特に「Raw ソケットの制限」セクションを参照してください。それは非常に明確に述べています

これらの問題を回避するには、特定のネットワーク プロトコル用の Windows ネットワーク プロトコル ドライバー (デバイス ドライバー) を作成する必要がある場合があります。

どちらの Delphi ネットワーク プログラミング ライブラリにも、独自のネットワーク プロトコル ドライバ AFAIK は付属していません。また、制限されたユーザー アカウントでのアクセス許可の問題や、Windows ファイアウォールの干渉についても役に立ちません。

あなたの質問でWinPcapに言及しているように、あなたはそれがあなたが望むことを行うことができることを知っています。Magenta Systems Internet Packet Monitoring Componentsのような Delphi ラッパーがあります。ただし、C++ プログラマーは、C++ からライブラリを直接使用する方がよい場合があります。Delphi は、実行したいソケット プログラミングに関して何も追加しないためです。特に、 libpcap APIに対して直接プログラミングするため、一部の Delphi ライブラリが提供するプラットフォームの違いを隠すために追加のレイヤーは必要ありません。

于 2009-11-03T05:23:47.473 に答える
1

ICS コンポーネントを確認する必要があります

ICS は、Delphi、C++Builder、BDS、および RAD Studio のすべてのバージョン(win32)用の無料のインターネット コンポーネント ライブラリです。TCP、UDP、raw ソケット、クライアント、サーバー、および FTP、SMTP、POP3、NNTP、HTTP などの多くの高レベル プロトコルが含まれます。

http://www.overbyte.be/

于 2009-11-03T01:40:17.503 に答える
1

私はむしろIndy よりもSynapseを好みます。そのアーキテクチャはよりシンプルで理解しやすいです。

于 2009-11-03T02:34:41.323 に答える
0

インディはよくやってます。かなり問題なく使えています。

より基本的なソケットの相互作用を探している場合は、次の他のコンポーネントを使用できます。

  • TTCPクライアント
  • TCPサーバー
  • TClientSocket
  • TServerSocket

これらのコンポーネントはすべて Delphi に同梱されています。

winpcap について直接は知りませんが、それ用の Delphi ラッパーがあると思います。現在、どこで見たのかわかりませんが、Google コード検索を使用して見つけるのは難しくありません。

于 2009-11-02T19:43:56.883 に答える