Le numéro de port est le numéro de port de l’ordinateur hôte.
byte[] monWriteBuffer;
monFlux.Write(monWriteBuffer, 0/* offset dans le buffer*/,
string monMessage;
/* Convertit la string en ASCII, et met le résultat dans un tableau d'octet */
int nbLus = monFlux.Read(monReadBuffer, 0/*offset*/, monReadBuffer.Length);
//read peut déclencher exception
messageRecu =
System.Text.Encoding.ASCII.GetString(monReadBuffer, 0, nbLus/*tout le buffer n'est pas utilisé*/);
IPhote = IPAddress.Parse(strIPhote); //conversion
monListenTcp = new TcpListener(IPhote, port); //le new ne déclenche pas d'exception
Le constructeur demande un objet de la classe IPAddress( System.Net), qu’il est aisé d’obtenir à partir d’une string, grâce à la méthode statique Parse, de la classe IPAddress. Le numéro de port est le numéro de port de l’ordinateur hôte.
Exceptions intéressantes pouvant être déclenchées par ce constructeur : aucune.
Une fois la méthode start appelée, il est nécessaire d’appeler une autre méthode : AcceptTcpClient, qui est bloquante. On en sort uniquement une fois qu’une connexion a été établie.
//Le AcceptTcpClient est bloquant: notre programme se bloque jusqu'à
//ce que quelqu'un demande à se connecter
monTcpClient = monListenTcp.AcceptTcpClient();
On récupère un objet qui représente notre TcpClient qui vient de se connecter. Cet objet va être très pratique, car il va nous permettre d’exprimer ce qu’on veut effectuer par rapport à notre client( recevoir des données, en émettre, etc). Et, de plus, il va s’utiliser de la même manière que n’importe quel TcpClient : obtention d’un NetWorkStream par GetStream, appel des méthodes Read quand on veut lire des données envoyées par le client, et Write quand on veut envoyer des données au client, etc…
La fermeture de l’écouteur se fait par un appel de la méthode stop de notre TcpListener.
monListenTcp.Stop();