Se sto capendo correttamente, sfortunatamente questo non sarà facile dato che è necessario virtualizzare gli adattatori di rete per fare il lavoro che si desidera. un indirizzo IP è associato a un nic (fisico o logico), non qualcosa che può essere specificato nel codice di livello superiore. VMWare Workstation include un plugin per Visual Studio, quindi forse puoi usarlo per generare molti virtual nics e assegnarli ip in modo programmatico, ma per il resto devi scrivere driver di schede di rete virtuali (probabilmente in un linguaggio non -.net) per farlo , se non si utilizza una tecnologia di virtualizzazione esistente. puoi impilare molti indirizzi IP su un nic, ma il computer che comunica con esso saprà che sono tutti la stessa entità di rete. se questo va bene con te, quindi aggiungi tutti gli IP che vuoi alla carta che hai.
sulla seconda parte della query, poiché si desidera che gli IP siano in grado di ricevere e inviare dati, i loro indirizzi dovranno essere instradabili, quindi non è possibile selezionare alcun vecchio indirizzo IP. se stai bene dietro un muro NAT, potresti usare 10.x.y.z per affrontarli, ma al di fuori del nat sembrerebbero tutti usare lo stesso IP pubblico verso il mondo esterno. per esporre 50k di indirizzi IP pubblicamente instradabili, devi prima registrarti e comprarli.
Infine non è possibile utilizzare TCPClient per eseguire Echo/Ping, poiché utilizzano il protocollo ICMP, ma utilizzano lo spazio dei nomi System.Net e System.Net.NetworkInformation. Ecco alcuni codici VB per inviare un ping solo per darti il sapore:
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
fonte
2012-10-30 16:32:30
Sono curioso di sapere quante schede di rete Windows può supportare.Comunicaci cosa è successo con l'utilizzo della CPU e della RAM sulla tua macchina dopo aver aggiunto molti adattatori di rete. – Kamil
È possibile avere più indirizzi IP su una singola scheda di rete. È questo che stai chiedendo come fare? – Gabe