Hej, piszę aplikację-chat w LANie, ale natrafiłem na problem - mianowicie nie jestem wstanie wyświetlić nowej wiadomości od innego użytkownika nie dopisując jej do wiadomości która właśnie jest wpisywana.
Zdjęcie poniżej przedstawia, jak podczas wpisywania wiadomości nagle przyjdzie wiadomość od użytkownika o id=0.
Moja funkcja Main to mniej więcej:
static void Main(string[] args) {
Client client = new Client();
client.Connect(host, port);
while(true) {
Console.Write(">");
string message = Console.ReadLine();
client.Send(message);
}
}
Wyświetlanie wiadomości przychodzących (OnMessageReceived jest w klasie Client)
private void OnMessageReceived(IAsyncResult _result) {
try {
int length = stream.EndRead(_result);
if (length > 0) {
byte[] data = new byte[length];
Array.Copy(buffer, data, length);
Message message = Message.Decode(data);
Console.WriteLine($"{message.SenderId}: {message.Content}");
stream.BeginRead(buffer, 0, buffer.Length, OnMessageReceived, null);
} else {
Disconnect();
}
}
catch (Exception _ex) {
Disconnect();
}
}
Próbowałem przechowywać tekst który nie został jeszcze wysłany oraz wszystko co już zostało napisane do konsoli i przy odebraniu nowej wiadomości doklejałem ją do tego co już jest w konsoli a na samym dole wyświetlałem tekst nowej wiadomości, ale nie pozwalało to na edycję tego co już zostało wpisane.
Pozdrawiam i z góry dziękuje za wszystkie pomysły