Maison > Article > développement back-end > Exemple de code de socket synchrone c# (Socket)
Exemple de socket client synchrone
L'exemple de programme suivant crée un client qui se connecte au serveur. Le client est généré avec un socket synchrone, donc l'exécution de l'application client est suspendue jusqu'à ce que le serveur renvoie une réponse. L'application envoie une chaîne au serveur puis affiche la chaîne renvoyée par le serveur sur la console.
C#
en utilisant System;
en utilisant System.Net;
en utilisant System.Net.Sockets;
en utilisant System.Text;
classe publique SynchronousSocketClient {
public; static void StartClient() {
// Tampon de données pour les données entrantes
byte[] bytes = new byte[1024];
// Connectez-vous à un appareil distant
try {
// Établit le point de terminaison distant pour le socket.
// Cet exemple utilise le port 11000 sur l'ordinateur local
IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName())
IPAddress ipAddress = ipHostInfo.AddressList. [0];
IPEndPoint remoteEP = new IPEndPoint(ipAddress,11000);
// Créer un socket TCP/IP
Socket sender = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp );
// Connectez le socket au point de terminaison distant.
try {
sender.Connect(remoteEP); }",
sender.RemoteEndPoint.ToString());
// Encodez la chaîne de données dans un tableau d'octets.
byte[] msg = Encoding.ASCII.GetBytes("Ceci est un test
int bytesSent = sender.Send(msg);
// Recevoir la réponse de l'appareil distant.
int bytesRec = sender. Recevoir(bytes);
Console.WriteLine("Echoed test = {0}",
Encoding.ASCII.GetString(bytes,0,bytesRec)); 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(" Exception inattendue : {0}", e.ToString());
}
} catch (Exception e) {
Console.WriteLine( e.ToString());
}
}
public static int Main(String[] args) {
StartClient();
return 0;
}
}
Exemple de socket de serveur de synchronisation L'exemple de programme suivant crée un serveur qui reçoit les demandes de connexion des clients. Le serveur est généré avec un socket synchrone,
suspendant ainsi l'exécution de l'application serveur en attendant une connexion du client. L'application reçoit une chaîne du client,
affiche la chaîne sur la console, puis renvoie la chaîne au client. La chaîne provenant du client doit contenir la chaîne "
pour signaler la fin du message.
C#
Copier le code
en utilisant System
en utilisant System.Net ;
using System.Net.Sockets;
using System.Text;
public class SynchronousSocketListener {
// Données entrantes du client
public static string data = null; static void StartListening() {
// Tampon de données pour les données entrantes
byte[] bytes = new Byte[1024];
// Établit le point de terminaison local pour le socket
// Dns. .GetHostName renvoie le nom de l'
// hôte exécutant l'application
IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName());
IPAddress ipAddress = ipHostInfo.AddressList[0];IPEndPoint localEndPoint = new IPEndPoint (ipAddress, 11 000 );
// Créez un socket TCP/IP .
Socket listener = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp );
// Liez le socket au point de terminaison local et
// écoutez les connexions entrantes.
essayez {
listener.Bind(localEndPoint);
listener.Listen(10);
// Commencez à écouter les connexions.
while (true) {
Console.WriteLine("En attente d'une connexion...");
// Le programme est suspendu en attente d'une connexion entrante.
Socket handler = listener.Accept();
données = null ;
// Une connexion entrante doit être traitée.
while (true) {
bytes = new byte[1024] ;
int bytesRec = handler.Receive(bytes);
data = Encoding.ASCII.GetString(bytes,0,bytesRec);
if (data.IndexOf("
break;
}
}
// Afficher les données sur la console.
Console.WriteLine( "Texte reçu : {0}", data);
// Répercuter les données au client.
byte[] msg = Encoding.ASCII.GetBytes(data);
handler.Send(msg);
handler.Shutdown(SocketShutdown.Both);
handler.Close();
}
} catch (Exception e) {
Console.WriteLine(e.ToString());
}
Console.WriteLine("nAppuyez sur ENTER pour continuer...");
Console.Read();
}
public static int Main(String[] args) {
StartListening();
retour 0 ;
}
}
以上就是c#(Socket)同步套接字代码示例的内容,更多相关内容请关注PHP中文网(www.php.cn)!