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
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
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) { } } }
le problème:
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); } }
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.
Partager