Bonjour,

J'ai un probleme avec mon server Telnet. Il doit recevoir des données en continue (et les afficher) et envoyer des string au client lors d'un évènement utilisateur. Je n'arrive pas a envoyer des strings au client (qui est une application autonome).

voila ma classe telnet

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
class TelnetServer
{
  public TelnetServer(int port, System.Windows.Forms.RichTextBox textbox)
  {
    this._port = port;
    this._textBox = textBox;
 
    try
    {
      Socket serverSocket = new Socket(AddressFamily.InterNetwork,   SocketType.Stream, ProtocolType.Tcp);
      serverSocket.Bind(new IPEndPoint(IPAddress.Any, this._port));
      serverSocket.Listen(1);
 
      try
      {
        _soc = serverSocket.Accept();
        _reader = new StreamReader(new NetworkStream(_soc, false));
        _writer = new StreamWriter(new NetworkStream(_soc, true));
      }
      catch(Exception)
      { 
      }
    }
    catch (Exception)
    {
    }
  }
 
  // methode pour l'acquisition des données et l'affichage
  public void DoWork()
  {
    String message;
    try
    {
      do
      {
        message = _reader.ReadLine();
        this._textBox.AppendText(message + "\n");
      }while (message != null);
    }
    catch
    {}
  }
 
  // methode pour l'envoi des string
  public void sendMessage(string msg)
  {
    try
    {
      this._writer.Write(msg);
    }
    catch(Exception e)
    {
    }
  }
 
}
et mon design de l'interface graphique

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
 
partial class UIForm
{
  private void onoffButton_Click(object sender, System.EventArgs e)
  {
    int port = 2323;
    this._telnetServer = new TelnetServer(port, textBox);
    try
    {
      CheckForIllegalCrossThreadCalls = false;
      Thread telnetThread = new Thread(this._telnetServer.DoWork);
      telnetThread.Start();
      ...
    }
  }
 
  private void sendButton_Click(object sender, System.EventArgs e)
  {
    debugCmd = "ma_commande";
    this._telnetServer.sendMessage(debugCmd);
  }
}
le problème:

la réception des données marche très bien (affichage dans ma box) mais pour l'envoi, je passe bien par la ligne "this._writer.Write(msg);" mais le client ne recoit rien (j'ai verifié) et aucune exception n'est levé

Est-ce du a la socket qui n'est que en lecture ??? ou autre chose ?

est-ce que quelqu'un aurait une idée, ou un exemple de serveur (Telnet ou autre) qui lance une lecture en continue et écrive de temps en temps (avec google, je n'ai trouvé que des utilisations soit lecture, soit écriture).

Merci de votre aide.