Итак, я пытался создать код, в котором TCP будет принимать всех клиентов, включая клиент повторного принятия, но когда я его использую, я не могу получить ответ от клиента, так как мне решить эту проблему?
Окно сообщений даже не появляется на сервере
код для расположения буфера (фоновый работник):
while (true)
{
try
{
client = network.AcceptTcpClient();
streamer = client.GetStream();
buffer = new byte[client.ReceiveBufferSize];
} catch(Exception ex)
{
MessageBox.Show(ex.Message,"Client Connection Error");
client.Close();
streamer.Close();
Close();
}
}
Код, в котором неправильно отображается окно сообщения, когда клиент отправляет ответ обратно на сервер (фоновый работник):
private void backgroundWorker2_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;
while (true)
{
string data = Encoding.Unicode.GetString(buffer, 0,
streamer.Read(buffer, 0, client.ReceiveBufferSize));
if (data == "Response_Command_329873123709123")
{
int slowdown = streamer.Read(buffer, 0,
client.ReceiveBufferSize);
var message = Encoding.Unicode.GetString(buffer,
0,slowdown);
worker.ReportProgress(0, message);
}
}
}
private void backgroundWorker2_ProgressChanged(object sender,
ProgressChangedEventArgs e)
{
MessageBox.Show((string)e.UserState, "Client Response");
}
Вот часть кода, где клиент получает ответ от сервера, а затем отправляет серверу сообщение (часть кода, но в основном фокусируется на этом):
else if (data == "Messagebox_Command_2837190092703817203")
{
int txtbox = streamer.Read(buffer, 0,
client.ReceiveBufferSize);
string txt = Encoding.Unicode.GetString(buffer, 0, txtbox);
MessageBox.Show(txt, "Message From Server");
byte[] database =
Encoding.Unicode.GetBytes("Response_Command_329873123709123");
streamer.Write(database,0,database.Length);
byte[] databases = Encoding.Unicode.GetBytes("test");
streamer.Write(databases, 0, databases.Length);