Kommunikation zwischen Android-App und .NET-Programm
Hallo,
im Rahmen eines Projektes von mir, versuche ich nun folgendes:
Mithilfe einer Android-App (Client) soll man das Programm (Sever, nur noch diese "Remote-Funktion" fehlt) überwachen und steuern können.
Ich habe einige Fragen diesbezüglich, da ich noch nie serverseitig programmiert habe.
Bisher habe ich bei Netzwerkprogrammierung nicht auf Low-level Basis (Sockets, TcpClient etc...), sondern auf High-Level (Http) programmiert,
deswegen: Ist es möglich, dass die .NET-Anwendung einen Http-Server simuliert, oder muss ich doch mit Sockets arbeiten?
Des Weiteren bin ich durch googeln auf das .NET Remote-Framework gestoßen, würde dieses mein Vorhaben vereinfachen bzw. setzt es voraus,
dass Client sowie Server über .NET verfügen?
Hier ein kleines Beispiel wie ich mir ein Server auf Low-Level Basis vorstelle:
Nun noch mehr Fragen :
Die serverseitige Programmierung ist doch richtig geschrieben oder? Die IP, mit der sich der Client (Nutze der Android-App) verbinden muss
ist die des Computers, auf dem das Programm läuft, nicht?
Hoffe auf Antworten,
Mit freundlichen Grüßen
~Fevenius
im Rahmen eines Projektes von mir, versuche ich nun folgendes:
Mithilfe einer Android-App (Client) soll man das Programm (Sever, nur noch diese "Remote-Funktion" fehlt) überwachen und steuern können.
Ich habe einige Fragen diesbezüglich, da ich noch nie serverseitig programmiert habe.
Bisher habe ich bei Netzwerkprogrammierung nicht auf Low-level Basis (Sockets, TcpClient etc...), sondern auf High-Level (Http) programmiert,
deswegen: Ist es möglich, dass die .NET-Anwendung einen Http-Server simuliert, oder muss ich doch mit Sockets arbeiten?
Des Weiteren bin ich durch googeln auf das .NET Remote-Framework gestoßen, würde dieses mein Vorhaben vereinfachen bzw. setzt es voraus,
dass Client sowie Server über .NET verfügen?
Hier ein kleines Beispiel wie ich mir ein Server auf Low-Level Basis vorstelle:
<?
// using System.Net;
// using System.Net.Sockets;
/// <summary>
/// Empfängt Nachrichten
/// </summary>
public void StartListening()
{
// Erhalte die eigene IP-Adresse
IPHostEntry ipHostInfo = Dns.GetHostEntry(Dns.GetHostName());
IPAddress ipAddress = ipHostInfo.AddressList;
IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 11000);
// TCP-Listener um Verbindungen einzugehen
TcpListener listener = new TcpListener(localEndPoint);
// Starte das abhören
listener.Start();
// TcpClient-Instanz des Clients, der sich verbindet
TcpClient client = listener.AcceptTcpClient();
// Byte-Buffer welcher die empfangende Nachricht enthalten wird
byte msgBuffer = new byte[4096];
// Den Stream zum Empfangen der Nachrichten speichern
NetworkStream requestStream = client.GetStream();
// Die Nachricht auslesen und speichern
requestStream.Read(msgBuffer, 0, msgBuffer.Length);
requestStream.Close();
client.Close();
// Konvertieren der Nachricht in einen string
string message = UTF8Encoding.ASCII.GetString(msgBuffer);
}
// Und hier ein Beispiel, wie ich mir die entsprechende Client-Seite (wieder in C#, nicht in Java, obwohl es aufgabe der Android-App ist) vorstelle:
// Wird in Wirklichkeit nicht auf denselben Ports laufen
/// <summary>
/// Empfängt Nachrichten
/// </summary>
public void Send(string message, IPEndPoint IP)
{
IPEndPoint IP = new IPEndPoint(84624488, 1000);
IPHostEntry ipHostInfo = Dns.GetHostEntry(Dns.GetHostName());
IPAddress ipAddress = ipHostInfo.AddressList;
IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 11000);
TcpClient client = new TcpClient(localEndPoint);
client.Connect(IP);
NetworkStream stream = client.GetStream();
stream.Write(UTF8Encoding.ASCII.GetBytes(message), 0, UTF8Encoding.ASCII.GetBytes(message).Length);
stream.Close();
client.Close();
}
>?
Nun noch mehr Fragen :
Die serverseitige Programmierung ist doch richtig geschrieben oder? Die IP, mit der sich der Client (Nutze der Android-App) verbinden muss
ist die des Computers, auf dem das Programm läuft, nicht?
Hoffe auf Antworten,
Mit freundlichen Grüßen
~Fevenius
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 244694
Url: https://administrator.de/contentid/244694
Ausgedruckt am: 16.11.2024 um 21:11 Uhr
1 Kommentar
Hallo Fevenius,
ich hoffe ich kann dir etwas Helfen. Bei der IP kommt es drauf an, wo du bist. Bist du im Intranet, dann wird es die Lokale IP Adresse des Rechners sein, diese sollte in etwa so anfangen:
192.168.... oder bei größeren Netzwerken 10.0.....
Wenn du aber von unterwegs oder woanders drauf zugreifen möchtest, brauchst du deine Externe IP, diese siehst du zb. auf www.wieistmeineip.de hierzu müsstet du ggf. Ports in einem Router freischalten. Wenn du zb. über http daten übertragen willst, dann wäre es Standardmäßig der Port 80 (dieser ist aber auch veränderbar)
Ich verwende eine Android APP und ein C# Programm, ich lasse die beiden über MySQL kommunizieren. Es gibt sicher bessere Lösung, aber in Sachen Programmierung bin ich auch noch einsteiger. Meine Welt ist eher TCP/IP ;)
Ich hoffe ich konnte dir etwas helfen.
Viele Grüße
Maffi
ich hoffe ich kann dir etwas Helfen. Bei der IP kommt es drauf an, wo du bist. Bist du im Intranet, dann wird es die Lokale IP Adresse des Rechners sein, diese sollte in etwa so anfangen:
192.168.... oder bei größeren Netzwerken 10.0.....
Wenn du aber von unterwegs oder woanders drauf zugreifen möchtest, brauchst du deine Externe IP, diese siehst du zb. auf www.wieistmeineip.de hierzu müsstet du ggf. Ports in einem Router freischalten. Wenn du zb. über http daten übertragen willst, dann wäre es Standardmäßig der Port 80 (dieser ist aber auch veränderbar)
Ich verwende eine Android APP und ein C# Programm, ich lasse die beiden über MySQL kommunizieren. Es gibt sicher bessere Lösung, aber in Sachen Programmierung bin ich auch noch einsteiger. Meine Welt ist eher TCP/IP ;)
Ich hoffe ich konnte dir etwas helfen.
Viele Grüße
Maffi