Я хочу создать простую программу чата, используя C#
и программирование сокетов.
Проблема в том, что когда я отправляю 3 сообщения на сервер, он не читает их отдельно.
Сначала он читает первое сообщение, а затем читает остальные данные.
Но я хочу прочитать все сообщения отдельно.
Например, когда я отправляю с клиента на сервер hello I'm Bill
три раза, мне приходится читать его три раза или печатать на экране отдельно.
Но он читает предложение 2 раза. Как я могу распечатать все сообщения отдельно?
Вот мой клиент Send
Метод:
private void bSendMessage_Click(object sender, EventArgs e)
{
//this method sends to "hello i'm Bill" three times to the server.
byte[] outStream = System.Text.Encoding.ASCII.GetBytes(rTBoxSendMessage.Text + "$");
serverStream.Write(outStream, 0, outStream.Length);
serverStream.Flush();
serverStream.Write(outStream, 0, outStream.Length);
serverStream.Flush();
serverStream.Write(outStream, 0, outStream.Length);
serverStream.Flush();
}
А это мой DoChat
метод, который читает данные:
private void DoChat()
{
byte[] bytesFrom = new byte[8192];
string dataFromClient = null;
while (true)
{
try
{
NetworkStream networkStream = clientSocket.GetStream();
networkStream.Read(bytesFrom, 0,(int)clientSocket.ReceiveBufferSize);
dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom);
dataFromClient = dataFromClient.Substring(0, dataFromClient.IndexOf("$"));
//Here is the problem
//it prints "hello i'm Bill" two times
//but i was sent three times
Console.WriteLine(dataFromClient);
Program.Broadcast(dataFromClient, clNo, true);
}
catch (Exception ex)
{
//Console.WriteLine("İstemci cikis yapti");
Console.WriteLine(ex.ToString());
clientSocket.Close();
break;
}
}
}