|
|
Netzwerkkommunikation
Beispiel "EchoServer und EchoClient"
Dieses Beispiel zeigt wie ein primitiver Server implementiet werden
kann, der jede Datenanfrage als Echo an den Rufer zurückschickt. Dabei ist zu
beachten, dass eine möglicherweise eingerichtete lokale Firewall die
Kommunikation zwischen Client und Server verhindern kann!
../../../samples/4/Netzwerkkommunikation/EchoServer.cs
using System;
using System.Net;
using System.Net.Sockets;
namespace Kapitel4.Netzwerkkommunikation {
class EchoServer {
Socket s;
public bool StartUp(IPAddress ip, int port){
try {
s = new Socket
(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
s.Bind(new IPEndPoint(ip, port));
s.Listen(10);
} catch (Exception e) {
Console.WriteLine(e.Message);
return false;
}
while (true) {
Socket newSocket = s.Accept(); // blockiert, bis sich Client verbindet
Communicate(newSocket);
}
}
void Communicate(Socket clSock) {
try {
byte[] buffer = new byte[1024];
while (clSock.Receive(buffer) > 0 ) // Receive blockiert, bis Daten kommen
clSock.Send(buffer);
clSock.Shutdown(SocketShutdown.Both);
clSock.Close ();
} catch (Exception e) {
Console.WriteLine(e.Message);
}
}
public static void Main() {
EchoServer server = new EchoServer( );
if (!server.StartUp(IPAddress.Loopback, 50000))
Console.WriteLine("Der Echo-Server konnte nicht gestartet werden");
}
}
}
|
../../../samples/4/Netzwerkkommunikation/EchoClient.cs
using System;
using System.Text;
using System.Net;
using System.Net.Sockets;
namespace Kapitel4.Netzwerkkommunikation {
class EchoClient {
public static void Main() {
try {
//----- Verbindung aufnehmen
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream,
ProtocolType.Tcp);
s.Connect(new IPEndPoint(IPAddress.Loopback, 50000));
//----- Senden
byte[] msg = Encoding.ASCII.GetBytes("Das ist ein Test");
s.Send(msg);
//----- Empfangen
byte[] retMsg = new byte[1024];
s.Receive(retMsg);
string str = Encoding.ASCII.GetString(retMsg);
Console.WriteLine(str);
} catch (Exception e) {
Console.WriteLine(e.Message);
}
}
}
}
|
Beispiel "WebRequest"
Das folgende Beispiel zeigt wie die HTML-Seite der URL "dotnet.jku.at"
abgefragt wird:
../../../samples/4/Netzwerkkommunikation/WebRequest.cs
using System;
using System.Net;
using System.IO;
using System.Net.Sockets;
namespace Kapitel4.Netzwerkkommunikation {
class WebTest {
static void Main() {
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://dotnet.jku.at");
HttpWebResponse response = (HttpWebResponse)req.GetResponse();
StreamReader r = new StreamReader(response.GetResponseStream());
string line = r.ReadLine();
while (line != null) {
Console.WriteLine(line);
line = r.ReadLine();
}
}
}
}
|
|