2012-01-24 8 views
0

私のプログラムでスレッドに関するいくつかのポインタを必要としますスキャンするポートが100以上ある場合。は、私はそうのように個別に与えられたIPアドレスのポートをスキャンアプリを作成しようとしている

スレッドを見ています。問題は、スレッドを扱う方法については何も書かれていませんが、基本的なスレッドを行う方法を示すMSDNやその他の記事から記事を読みました。

今、私のプログラムでスレッドを実装する方法がわかりません。私はScanPortメソッドを指すイベントハンドラを作成することができましたが、1つ以上のスレッドを初期化すると、ポートの先頭からpingを開始します。私が持っていたもののもう一つは、何本のスレッドを開始すべきかということでした。

アイデアはありますか?私は私のプログラムにスレッドを実装する方法の基本的な考え方が必要です。

+0

を、私はあなたがいない*ことを示唆しています*スレッドが必要な場合は、非同期I/Oを使用するだけです。 1つのスレッドが100個のポートを非常に素早くスキャンすることは絶対に問題ありません。 –

+0

@Greg Hewgill、ポートが開いているときにはかなり素早くチェックできますが、閉じているときはタイムアウトまで待ってから別のポートを確認できます。また、非同期スキャンを使用しないでください。 – HelpNeeder

+0

はい、非同期I/Oを使用していますが、同期的に使用しています。あなたは接続を開始してから、何か起こるのを待っています。私が示唆していることは、複数の*異なる*接続に対して同時に 'BeginConnect'を呼び出すことができるということです。 –

答えて

2

単一のスレッドプログラムが.Netでマルチスレッド化できる多くの方法があります。 .NETでスレッド化の仕組みを学ぶことに興味があるなら、これは良い機会かもしれませんが、他の人はマルチスレッドの使用を探していると示唆しているので、それ自体は価値のある活動ではありません。プログラミングは、並列性および/または並行性を混合物に投げかけることなく、十分に難しい。

あなたは.NETでマルチスレッドに見たい場合は、あなたがおよそ読みする必要があります。

System.Threading.Thread

System.Threading.Threadpool

Other methods...

関連する問題