public void Communicate() { if (cSocket != null) { Console.WriteLine("Начало общения..."); EventComment?.Invoke("Начало общения..."); while (true) { String d = ReceiveData(); Parse(d); } } }
private void Parse(string s) { // КОМАНДА=ЗНАЧЕНИЕ (LOGIN=Иван) char[] sep = { '=' }; var cd = s.Split(sep, 2); switch (cd[0]) { case "LOGIN": { LoginCmdReceived?.Invoke(cd[0], cd[1]); break; } case "LOGIN1": { EventError?.Invoke(0); break; } case "MESSAGE": { MessageCmdReceived?.Invoke(cd[0], cd[1]); break; } case "MESSAGE1": { PrivateMessage?.Invoke(cd[0], cd[1]); break; } case "USERLIST": { UserListCmdReceived?.Invoke(cd[0], cd[1]); break; } case "START": { StartCmdReceived?.Invoke(cd[0], cd[1]); break; } case "ERROR": { EventComment?.Invoke("Нет пользователя"); break; } } }
public String ReceiveData() { String res = ""; if (cSocket != null) { var b = new byte[65536]; Console.WriteLine("Ожидание данных..."); EventComment?.Invoke("Ожидание данных..."); var i = 0; do { var cnt = cSocket.Receive(b); Console.WriteLine("Получена порция данных №{0}", ++i); EventComment?.Invoke("Получена новая порция данных"); var r = Encoding.UTF8.GetString(b, 0, cnt); res += r; } while (res[res.Length - 1] != '\n'); Console.WriteLine("Данные успешно получены"); EventComment?.Invoke("Данные успешно получены"); } return(res.Trim()); }
public void SendData(String command, String data) { if (cSocket != null) { try { if (data.Trim().Equals("") || command.Trim().Equals("")) { return; } var b = Encoding.UTF8.GetBytes(command + "=" + data + "\n"); Console.WriteLine("Отправка сообщения..."); EventComment?.Invoke("Отправка сообщения..."); cSocket.Send(b); Console.WriteLine("Сообщение успешно отправлено!"); EventComment?.Invoke("Сообщение успешно отправлено!"); } catch (Exception ex) { Console.WriteLine("Не удалось отправить сообщение :("); EventComment?.Invoke("Не удалось отправить сообщение :("); } } }