6

私はここに来たばかりです...助けを求めて掘り下げていましたが、参加してガイダンスを求めることにしました.

複数の「偽の」デバイスを作成できるアプリを作成しようとしています。彼らには IP アドレスが必要で、ping に応答できると思います。WMIに対応できるのもいいですね。シミュレーターみたいなやつ。50,000 台までのデバイスを作成したいのですが、1 台から始めても問題ありません。

そのようなアプリには何が必要ですか? TCP クライアント/リスナー? 私は前にこのようなことをしたことがないので、優しくしてください:)

4

2 に答える 2

3

仮想ネットワーク アダプター(ドライバーは Windows OS に含まれています) をインストールすることはできますが、私はこれを使用したことがありません。仮想ネットワーク アダプタのドライバは次のとおりです。%WINDIR%\Inf\Netloop.inf

次のように、 DevConと呼ばれるコマンド ライン ツールを使用して、スクリプトでデバイスを追加できます。

devcon -r install %WINDIR% \Inf\Netloop.inf *MSLOOP

残念ながら、インストールには数秒かかります (私の Core Duo 2.0 ラップトップでは)。

多くのネットワーク カードを構成する必要がある場合は、コマンド ラインを使用できますnetsh

例:

netsh in ip set address "Local Area Connection" static 10.0.0.1 255.0.0.0 10.0.0.1 1
netsh in ip add address "Local Area Connection" 10.0.0.2 255.0.0.0
netsh in ip set address "Local Area Connection 2" 10.0.0.3 255.0.0.0
netsh in ip set address "Local Area Connection 3" 10.0.0.4 255.0.0.0
netsh in ip set dns "Local Area Connection" static 10.0.0.250
netsh in ip set wins "Local Area Connection" static 10.0.0.250

現在のネットワーク構成をファイルにダンプ/エクスポートできます (現在の構成がどのように見えるかを確認するため):

netsh interface dump > file.txt

その他の netsh の例

編集:この場合には役に立たない情報を削除しました。

于 2012-10-30T16:21:25.447 に答える
1

私があなたを正しく理解していれば、残念ながら、ネットワーク アダプターを仮想化して必要な仕事をする必要があるため、これは簡単ではありません。IP アドレスは NIC (物理的または論理的) にバインドされており、上位層のコードで指定できるものではありません。VMWare Workstation には Visual Studio 用のプラグインが含まれているため、おそらくそれを使用して多くの仮想 nic を生成し、それらにプログラムで IP を割り当てることができますが、それ以外の場合は仮想ネットワーク カード ドライバーを (おそらく .net 以外の言語で) 作成する必要があります。 、既存の仮想化技術を使用しない場合。NIC に多くの IP アドレスをスタックできますが、それと通信するコンピューターは、それらがすべて同じネットワーク エンティティであることを認識します。それでよろしければ、お持ちのカードに必要なすべての IP を追加してください。

クエリの 2 番目の部分に進みます。IP がデータを送受信できるようにするため、それらのアドレスはルーティング可能である必要があるため、古い IP アドレスを選択することはできません。NAT の壁の背後にいることに問題がない場合は、10.xyz を使用してそれらに対処できますが、NAT の外側では、それらはすべて、外の世界に対して同じパブリック IP を使用しているように見えます。パブリックにルーティング可能な 50,000 個の IP アドレスを公開するには、まずそれらを登録して購入する必要があります。

最後に、TCPClient を使用して Echo/Ping を実行することはできません。これは、ICMP プロトコルを使用し、代わりに System.Net および System.Net.NetworkInformation 名前空間を使用するためです。ping を送信するための VB コードを次に示します。

Imports System
Imports System.Net
Imports System.Net.NetworkInformation


Public Class Pinger

    <System.Diagnostics.DebuggerNonUserCode()> _
        Public Sub New()
        MyBase.New()

        'This call is required by the Component Designer.
        InitializeComponent()

    End Sub


    Public Shared Function CanHostBePinged(ByVal IPAddr_DNS_OR_Host_Name As String) As Boolean
        Dim p As New Ping
        Dim po As New PingOptions

        po.Ttl = 256
        po.DontFragment = False

        Dim stringOut As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDE"
        Dim streamOut As Byte() = System.Text.Encoding.ASCII.GetBytes(stringOut)

        Try
            Dim reply As PingReply = p.Send(IPAddr_DNS_OR_Host_Name, 30, streamOut)
            If reply.Status = IPStatus.Success Then
                Return True
            Else
                Return False
            End If
        Catch ex As Exception
            Return False
        End Try

    End Function


End Class
于 2012-10-30T16:32:30.000 に答える