So I was trying to make a code where TCP will accept all client which involves the repeat accept client but when I use that, I cant receive any response from the client so how do I solve this?
The messagebox won't even pop up on the server
code for the buffer location (Background worker):
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();
}
}
Code where ill show messagebox when client send a response back to the server (Background worker):
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");
}
Here is part of the code where client receives a response from server then send a server a message (Part of the code but mainly focus on this):
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);
I think my buffer part error but i fixed it
int databases = streamer.Read(buffers, 0, buffers.Length);
string data = Encoding.Unicode.GetString(buffers, 0, databases);
if (data == "Response_Command_329873123709123")
{
byte[] datacen = new byte[client.ReceiveBufferSize];
int main = streamer.Read(datacen, 0, datacen.Length);
var message = Encoding.Unicode.GetString(datacen, 0, main);
MessageBox.Show(message, "Client Response");
}