Hallo,
ich möchte ein Programm schreiben, das Daten im Netzwerk zu einem anderen Rechner senden kann.
Ich weiß, dass es sowelche Programme 100 mal im Internet als Freeware gibt, jedoch bin ich dran C# zu lernen
und bin an dem Punkt Netzwerke angekommen.
Punkt 1:
Ich habe versucht über einen Prozess die arp-Tabelle abzurufen und zu speichern, um alle verfügbaren IPadressen zu bekommen. Zuvor hab ich nun noch eine Ping-schleife gebaut, die alle rechner im subnetz anpingen soll, da sonst die arp-tabelle nicht gefüllt ist und er keine Rechner anzeigt! Ich weiß leider nicht, ob es der richtige Weg ist bzw ob es es eine einfachere Methode gibt:
Ping-schleife und Arp-Tabelle:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| for (int i = 0; i < 200; i++) { Ping pingSender = new Ping(); PingOptions options = new PingOptions(); options.DontFragment = true; String ip; ip = "192.168.1." + i.ToString(); string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; byte[] buffer = Encoding.ASCII.GetBytes(data); int timeout = 60; pingSender.SendAsync(ip, timeout, buffer, options); } |
Die IP-Adressse (hier 192.168.1.xxx) soll später noch variabel von der eigenen IP aus gesteuert werden, sofern die Methode behaupt sinnvoll ist!
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| Process proc = new Process();
proc.StartInfo.FileName = Environment.SystemDirectory + @"\arp.exe"; proc.StartInfo.Arguments = "-a"; proc.StartInfo.UseShellExecute = false; proc.StartInfo.CreateNoWindow = true; proc.StartInfo.RedirectStandardOutput = true; proc.StartInfo.RedirectStandardError = true; proc.StartInfo.RedirectStandardInput = true;
proc.Start();
while (!proc.StandardOutput.EndOfStream) { fullLine.Add(proc.StandardOutput.ReadLine()); }
proc.WaitForExit(); proc.Close(); |
Das ist der Prozess der die cmd mit der Arp-Tabelle aufruft, die später weiterverarbeitet wird!
-----------------------------------------------------------------------------------------------
Punkt 2:
Des weiteren versuch ich eine simple Connection per Socket aufzubauen, indem ich eine IP verscuhe per Socket zu verbinden! z.B. einen WebServer per IP oder Hostnamen. Jedoch bekomme ich immer die Exception zurück!
Socket-Verbindung:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| string iptext = lIP.Text; string porttext = lPort.Text; Socket connection = null; try { IPAddress ip = IPAddress.Parse(iptext); IPEndPoint ipEnd = new IPEndPoint(ip, Convert.ToInt32(porttext)); connection = new Socket(ipEnd.AddressFamily, SocketType.Stream, ProtocolType.Tcp); connection.Connect(ipEnd); if (connection.Connected) { ConnectionTA.Text = "Connection with " + iptext + " on Port " + porttext + " established!"; connection.Close(); } } catch (Exception esc) { ConnectionTA.Text = "Fehler:\r\n" + esc.Message; } |
-----------------------------------------------------------------------------------------------
Ich hoffe, dass jemand mir ein paar Tipps und verbesserungen zu den besagten Problemen geben kann.
MFG
Marcel