probleme lecture/ecriture socket
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:
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:
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.