Heim > Artikel > Backend-Entwicklung > c# (Socket) synchrones Socket-Codebeispiel
Beispiel für einen synchronen Client-Socket
Das folgende Beispielprogramm erstellt einen Client, der eine Verbindung zum Server herstellt. Der Client wird mit einem synchronen Socket erzeugt, sodass die Ausführung der Clientanwendung angehalten wird, bis der Server eine Antwort zurückgibt. Die Anwendung sendet eine Zeichenfolge an den Server und zeigt dann die vom Server zurückgegebene Zeichenfolge auf der Konsole an.
C#
using System.Net;
using System.Text;
public class SynchronousSocketClient static void StartClient() {
// Datenpuffer für eingehende Daten // Richten Sie den Remote-Endpunkt für den Socket ein.
// Dieses Beispiel verwendet Port 11000 auf dem lokalen Computer
IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName())
IPAddress = ipHostInfo.AddressList [0];
IPEndPoint remoteEP = new IPEndPoint(ipAddress,11000);
/ Erstellen Sie einen TCP/IP-Socket
Socket sender = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
// Verbinden Sie den Socket mit dem Remote-Endpunkt.
Try {
sender.Connect(remoteEP);"Socket connected to {0 }",
sender.RemoteEndPoint.ToString());
// Kodieren Sie die Datenzeichenfolge in ein Byte-Array.
byte[] msg = Encoding.ASCII.GetBytes("Dies ist ein Test
int bytesSent = sender.Send(msg);
// Die Antwort vom Remote-Gerät empfangen.
int bytesRec = sender. Receive(bytes);
Console.WriteLine("Echoed test = {0}",
Encoding.ASCII.GetString(bytes,0,bytesRec));
/ Geben Sie den Socket frei sender.Shutdown(SocketShutdown.Both);
sender.Close();
} Catch (ArgumentNullException ane) {
Console.WriteLine("ArgumentNullException : {0}",ane.ToString());
} Catch (SocketException se) {
Console.WriteLine("SocketException : {0}",se.ToString());
} Catch (Exception e) {
Console.WriteLine(" Unerwartete Ausnahme: {0}", e.ToString());
}
} Catch (Exception e) {
Console.WriteLine( e.ToString());
}
}
public static int Main(String[] args) {
StartClient();
return 0;
}
Synchronisationsserver-Socket-Beispiel Das folgende Beispielprogramm erstellt einen Server das Verbindungsanfragen von Clients empfängt. Der Server wird mit einem synchronen Socket erzeugt,
wodurch die Ausführung der Serveranwendung angehalten wird, während auf eine Verbindung vom Client gewartet wird. Die Anwendung empfängt eine Zeichenfolge vom Client,
zeigt die Zeichenfolge auf der Konsole an und gibt die Zeichenfolge dann an den Client zurück. Die vom Client kommende Zeichenfolge muss die Zeichenfolge „
enthalten, um das Ende der Nachricht zu signalisieren.
C#
Code kopieren
mit System
mit System.Net;
using System.Net.Sockets;
using System.Text;
public class SynchronousSocketListener {
// Eingehende Daten vom Client
public static string data = null; static void StartListening() {
// Datenpuffer für eingehende Daten
byte[] bytes = new Byte[1024]// Richten Sie den lokalen Endpunkt für den Socket ein .GetHostName gibt den Namen des
// Hosts zurück, auf dem die Anwendung ausgeführt wird.
IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName());
IPAddress = ipHostInfo.AddressList[0];IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 11000);
// Erstellen einen TCP/IP-Socket.
Socket-Listener = neuer Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp );
// Binden Sie den Socket an den lokalen Endpunkt und warten Sie auf eingehende Verbindungen.
versuchen Sie es mit {
listener.Bind(localEndPoint);
listener.Listen(10);
// Beginnen Sie, auf Verbindungen zu achten.
while (true) {
Console.WriteLine("Warten auf eine Verbindung...");
// Das Programm wird angehalten, während auf eine eingehende Verbindung gewartet wird.
Socket handler = listener.Accept();
data = null;
// Eine eingehende Verbindung muss verarbeitet werden.
while (true) {
bytes = new byte[1024];
int bytesRec = handler.Receive(bytes);
data += Encoding.ASCII.GetString(bytes,0,bytesRec);
if (data.IndexOf("
break;
}
}
// Zeige die Daten auf der Konsole an.
Console.WriteLine( "Text empfangen : {0}", data);
// Senden Sie die Daten an den Client zurück.
byte[] msg = Encoding.ASCII.GetBytes(data);
handler.Send(msg);
handler.Shutdown(SocketShutdown.Both);
handler.Close();
}
} catch (Exception e) {
Console.WriteLine(e.ToString());
}
Console.WriteLine("nPress ENTER to continue...");
Console.Read();
}
public static int Main(String[] args) {
StartListening();
return 0;
}
}