IP, nur wohin?
-
huhu, kurz und knapp,
wo muss ich in diesem Code (von msdn.microsoft.com) die IP übergeben, das compilen funtzt nur hat er ja keine IP zum anpingen, welche Variable ist das?
args,
reply,
...
habe rumprobiert aber nichts rausgefunden
oder muss da noch nen Methodenaufruf rein?#using <System.dll> using namespace System; using namespace System::Text; using namespace System::Net; using namespace System::Net::NetworkInformation; using namespace System::ComponentModel; using namespace System::Threading; void PingCompletedCallback( Object^ sender, PingCompletedEventArgs^ e ); void DisplayReply( PingReply^ reply ); int main() { array<String^>^args = Environment::GetCommandLineArgs(); if ( args->Length == 1 ) throw gcnew ArgumentException( "Ping needs a host or IP Address." ); String^ who = args[ 1 ]; AutoResetEvent^ waiter = gcnew AutoResetEvent( false ); Ping ^ pingSender = gcnew Ping; // When the PingCompleted event is raised, // the PingCompletedCallback method is called. pingSender->PingCompleted += gcnew PingCompletedEventHandler( PingCompletedCallback ); // Create a buffer of 32 bytes of data to be transmitted. String^ data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; array<Byte>^buffer = Encoding::ASCII->GetBytes( data ); // Wait 12 seconds for a reply. int timeout = 12000; // Set options for transmission: // The data can go through 64 gateways or routers // before it is destroyed, and the data packet // cannot be fragmented. PingOptions ^ options = gcnew PingOptions( 64,true ); Console::WriteLine( "Time to live: {0}", options->Ttl ); Console::WriteLine( "Don't fragment: {0}", options->DontFragment ); // Send the ping asynchronously. // Use the waiter as the user token. // When the callback completes, it can wake up this thread. pingSender->SendAsync( who, timeout, buffer, options, waiter ); // Prevent this example application from ending. // A real application should do something useful // when possible. waiter->WaitOne(); Console::WriteLine( "Ping example completed." ); } void PingCompletedCallback( Object^ /*sender*/, PingCompletedEventArgs^ e ) { // If the operation was canceled, display a message to the user. if ( e->Cancelled ) { Console::WriteLine( "Ping canceled." ); // Let the main thread resume. // UserToken is the AutoResetEvent object that the main thread // is waiting for. (dynamic_cast<AutoResetEvent^>(e->UserState))->Set(); } // If an error occurred, display the exception to the user. if ( e->Error != nullptr ) { Console::WriteLine( "Ping failed:" ); Console::WriteLine( e->Error->ToString() ); // Let the main thread resume. (dynamic_cast<AutoResetEvent^>(e->UserState))->Set(); } PingReply ^ reply = e->Reply; DisplayReply( reply ); // Let the main thread resume. (dynamic_cast<AutoResetEvent^>(e->UserState))->Set(); } void DisplayReply( PingReply ^ reply ) { if ( reply == nullptr ) return; Console::WriteLine( "ping status: {0}", reply->Status ); if ( reply->Status == IPStatus::Success ) { Console::WriteLine( "Address: {0}", reply->Address->ToString() ); Console::WriteLine( "RoundTrip time: {0}", reply->RoundtripTime ); Console::WriteLine( "Time to live: {0}", reply->Options->Ttl ); Console::WriteLine( "Don't fragment: {0}", reply->Options->DontFragment ); Console::WriteLine( "Buffer size: {0}", reply->Buffer->Length ); } }
edit:
Da ich den Code ja auch verstehen will, damit ich ihn weiterschreiben kann und später auch eigene in der Richtung, würde ich gerne dann ein Statement zu den Codes, wenn ihr welche vorschlagt, damit ich weiß was sie machen/bewirken sollen.RT
-
Hallo
int main() { array<String^>^args = Environment::GetCommandLineArgs(); if ( args->Length == 1 ) throw gcnew ArgumentException( "Ping needs a host or IP Address." ); //...
Das Programm möchte eine IP-Adresse oder einen Hostnamen als Übergabeparameter beim Start.
Du kannst das in der IDE in den Projekteigenschaften unter
Konfigurationseigenschaftn/Debugging/Befehlsargumente eintragenoder manuell programmname.exe 127.0.0.1
Gruß
foodax
-
asoo... daran habe ich gar nicht gedacht, danke dir...
nun habe ich eine Idee, was wenn ich den Code in ein anderes als das main-Script verlagere, in dem neuen main-Script wir nun das Script aufgerufen mit der IP, die er aus einer IP liest...
-
Hallo,
ich meins eigentlich noch nicht mal böse, aber wie wärs mit programmieren lernen? Einfach irgendwelchen Code den du nicht verstehst irgendwo hinzukopieren und hoffen das das irgendwie funktioniert kann doch nicht dein ernst sein oder? Und von Skripten zu reden wo doch C++ alles andere als ne Skriptsprache ist. Lern die Grundlagen, dann verstehst du auch den Code und dann kannst du ihn ja auch erst nach deinen wünschen anpassen.
-
RunTime schrieb:
...in dem neuen main-Script wir nun das Script aufgerufen mit der IP, die er aus einer IP liest...
... mit der IP die er aus einer IP liest??? Ich verstehe Dein Problem nicht.
Den Code in eine separate Funktion auslagern, die von main() aufgerufen wird, sollte ja kein Problem darstellen? Falls ja, fehlen Dir noch einige Grundlagen.
Gruß
foodax
-
Sry Gedankenfehler, ich meinte eine IP, die er aus einer Datei liest, also er liest eine IP aus einer liste.txt und gibt sie an das script weiter, das script gibt die Ausgabe zurück und das erste script gibt es dann auf der Konsole aus, bin gerade dabei sowas zu machen und geht auch gut voran.
@Zwergli
Na das mach ich doch gerade, habe mit reinem C++ angefangen und bin nun bei .Net anwendungen