Я пытаюсь построить чат, в основном я использовал функцию invoke что нить.
Я могу прочитать то, что сервер отправляет мне, но я могу написать только один раз. я пытаюсь закончить это, но не знаю, как писать на сервер каждый раз, когда сервер:
(учтите, что я написал это раньше в форме консольного приложения, и сервер работает нормально ... т.е. проблема не в сервере).
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Button btn1 = new Button();
btn1.Click += button1_Click;
}
StreamReader sr;
StreamWriter sw;
TcpClient connection;
private void Form1_Load(object sender, EventArgs e)
{
connection = new TcpClient("127.0.0.1", 5000);
sr = new StreamReader(connection.GetStream());
sw = new StreamWriter(connection.GetStream());
}
private void button2_Click(object sender, EventArgs e)
{
Thread t2 = new Thread(Reader);
t2.Start(connection);
}
string msg;
public void Reader(object o)
{
TcpClient con = o as TcpClient;
if (con == null)
return;
while (true)
{
msg = sr.ReadLine();
Invoke(new Action(Output));
}
}
public void Output()
{
ChatScreen.Text = msg;//set the message on the screen
}
string textinput;
private void button1_Click(object sender, EventArgs e)
{
textinput = InputLine.Text;
sw.WriteLine(textinput);// this thing, writes once, multiple clicks wont send a new line to the server :(..the problem is in this button
sw.Flush();
}
}
что я подумал сделать, это подключить кнопку, чтобы она могла делать несколько щелчков .. например, btn.Click () .. или запустить поток с вызовом на WriteLine (но моя интуиция говорит, что создание кнопки нажатие несколько раз заставит программу работать