public Drawing_Paint_CLient() { InitializeComponent(); label2.BackColor = Color.Black; //По умолчанию для пера задан черный цвет, поэтому мы зададим такой же фон для label2 g = panel1.CreateGraphics(); //Создаем область для работы с графикой на элементе panel pic = new Bitmap(panel1.Width, panel1.Height); // картинка listener = new UdpMessageListener <Lines>(Ports.LineServerPort); listener.IncomingMessage += OnLinesMessage; listener.Start(); SMlistener = new UdpMessageListener <ServiceMessage>(Ports.SMServerPort); SMlistener.IncomingMessage += OnServiceMessage; SMlistener.Start(); Pictlistener = new UdpMessageListener <Pictures>(Ports.PictPort); Pictlistener.IncomingMessage += OnPicturesMessage; Pictlistener.Start(); using (var writer = NetworkingFactory.UdpWriter <ServiceMessage>(IPAddress.Parse(serverIP), Ports.SMPort)) { var info = new ServiceMessage(Command.GetPic); writer.Write(info); } }
public ListenMessagesFromClient(Sandbox sandbox, int port) { Sandbox = sandbox; Listener = new UdpMessageListener(port); Listener.Listen(MessageReceived); Sandbox.OnWorldUpdateAfterCollisions.Subscribe(AfterWorldUpdate); }
public void ShouldReceiveMessagesFromMultipleSources() { var listenerPort = 20002; var expectedMessages = new string[] { "msg 1", "msg 2" }; var listener = new UdpMessageListener(listenerPort); var count = 0; listener.Listen((actualMessage, address) => { count++; Assert.IsTrue(expectedMessages.Contains(actualMessage)); if (count >= 2) { AsyncAssert.Done(); } }); var writer1 = new UdpMessageSender(); var writer2 = new UdpMessageSender(); writer1.Send(expectedMessages[0], "localhost", listenerPort); writer2.Send(expectedMessages[1], "localhost", listenerPort); AsyncAssert.Wait(); writer1.Dispose(); writer2.Dispose(); listener.Dispose(); }
public Drawing_Paint() { InitializeComponent(); label2.BackColor = Color.Black; //По умолчанию для пера задан черный цвет, поэтому мы зададим такой же фон для label2 g = panel1.CreateGraphics(); //Создаем область для работы с графикой на элементе panel listener = new UdpMessageListener <Lines>(9090); listener.IncomingMessage += OnServiceMessage; listener.Start(); }
public ListenMessagesFromServer(Sandbox sandbox, int port, string playerName) { Sandbox = sandbox; TempPosition = new Position(0, 0); Listener = new UdpMessageListener(port); Listener.Listen(MessageReceived); PlayerName = playerName; Sandbox.OnWorldUpdateAfterCollisions.Subscribe(WorldUpdate); }
// при загрузке формочки запускаем слушателей, которые ловят события private void Form1_Load(object sender, EventArgs e) { linesListener = new UdpMessageListener <Lines>(Ports.LinePort); linesListener.IncomingMessage += OnLinesMessage; linesListener.Start(); SMlistener = new UdpMessageListener <ServiceMessage>(Ports.SMPort); SMlistener.IncomingMessage += OnServiceMessage; SMlistener.Start(); }
public IpDiscover(Action <string> onNewIpDiscovered) { IpsFound = new List <string>(); OnNewIpDiscovered = onNewIpDiscovered; port = 47777; myIp = NetworkHelper.GetLocalIPAddress(); broadcastIp = NetworkHelper.GetBroadcastAddress( IPAddress.Parse(myIp), IPAddress.Parse("255.255.255.0")).ToString(); listener = new UdpMessageListener(port); sender = new UdpMessageSender(); listener.Listen(OnMessageReceived); var operation = new ParameterizedThreadStart(Broadcast); broadcastLoop = new Thread(operation, 1024 * 1024); broadcastLoop.Start(); }
public void ShouldReceiveAtLeastMessage() { var listenerPort = 20000; var expectedMessage = "Opa! excelente~"; var listener = new UdpMessageListener(listenerPort); listener.Listen((actualMessage, address) => { Assert.AreEqual(expectedMessage, actualMessage); AsyncAssert.Done(); }); var writer = new UdpMessageSender(); writer.Send(expectedMessage, "localhost", listenerPort); AsyncAssert.Wait(); writer.Dispose(); listener.Dispose(); }
/// <summary> /// Конструктор формы для прождения теста /// </summary> /// <param name="ipAddressString"> ip-адрес сервера </param> public QuestionForm(string ipAddressString) { _listener = new UdpMessageListener <Question>(9090); _listener.IncomingMessage += OnIncomingQuestion; _listener.Start(); _server = NetworkingFactory.UdpWriter <ServiceMessage>(IPAddress.Parse(ipAddressString), 8080); InitializeComponent(); //Отправляем на сервер запрос о количестве вопросов в базе данных ServiceMessage msg = new ServiceMessage(Command.CountQuestions); _server.Write(msg); bool flag = false; //Пытаемся получить ответ на запрос от сервера try { var reader = NetworkingFactory.UdpReader <Question>(9091); var Message = reader.Read(15000); var Sender = reader.Sender; int.TryParse(Message.Text, out maxQuestionNumber); flag = true; reader.Dispose(); } catch (Exception e) { //MessageBoxButtons buttons = MessageBoxButtons.OK; //MessageBox.Show(e.Message, "Error Detected in Input", buttons); } //Если ответ от сервера не получен, показываем соответствующее сообщение для пользователя string caption = "Info"; var message = ""; if (!flag) { message = "Сервер не отвечает."; } else if (maxQuestionNumber == 0) { message = "В базе нет ни одного вопроса."; } if (message != "") { MessageBoxButtons buttons = MessageBoxButtons.OK; MessageBox.Show(message, caption, buttons); } CountLabel.Text = "В базе " + maxQuestionNumber + " вопросов."; //Генерируем случайную последовательность вопросов perm = Enumerable.Range(1, maxQuestionNumber).ToArray(); Random r = rnd; for (int i = maxQuestionNumber - 1; i >= 1; i--) { int j = r.Next(i + 1); int temp = perm[j]; perm[j] = perm[i]; perm[i] = temp; } //Отправляем на сервер запрос первого вопроса теста msg = new ServiceMessage(Command.NextQuestion, perm[NumQuestion]); _server.Write(msg); }
private void Form1_Load(object sender, EventArgs e) { listener = new UdpMessageListener <Lines>(8080); listener.IncomingMessage += OnServiceMessage; listener.Start(); }
static void Main(string[] args) { using (var listener = new UdpMessageListener <ServiceMessage>(8080)) { listener.IncomingMessage += OnServiceMessage; listener.Start(); Console.WriteLine("Сервер жив!"); Console.WriteLine("Список команд: "); Console.WriteLine("questions - вывести список вопросов из базы;"); Console.WriteLine("delete - удалить вопрос из базы по id;"); Console.WriteLine("exit - закончить работу сервера."); Console.WriteLine(); while (true) { string command = Console.ReadLine().ToLower(); switch (command) { case "questions": { string connectionString = GetConnectionString(); using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); string query = @"SELECT Id, Text FROM [QUESTIONS]"; //string query = @"SELECT * FROM [QUESTIONS]"; using (SqlCommand sqlcommand = new SqlCommand(query, connection)) { using (SqlDataReader reader = sqlcommand.ExecuteReader()) { while (reader.Read()) { for (int i = 0; i < reader.FieldCount; i++) { var dtS = reader.GetDataTypeName(i); string s; switch (dtS) { case "int": { s = String.Format("{0}", reader.GetInt32(i)); break; } case "nvarchar": { s = reader.GetString(i); break; } default: { s = "@" + dtS + "@"; break; } } Console.Write("\"{0}\" ", s == null ? "null" : s); } Console.WriteLine(); } } } } break; } case "delete": { string connectionString = GetConnectionString(); int countQuestions; using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); string query = @"SELECT COUNT(*) cnt FROM [QUESTIONS]"; using (SqlCommand commandS = new SqlCommand(query, connection)) { countQuestions = Convert.ToInt32(commandS.ExecuteScalar()) + 1; } connection.Close(); } Console.Write("Введите номер вопроса (Введите \"-1\" для отмены операции): "); int id; if (!Int32.TryParse(Console.ReadLine(), out id)) { Console.WriteLine("Значение введено некорректно."); } else if (id == -1) { Console.WriteLine("Операция отменена"); break; } else if (id > countQuestions || id < -1) { Console.WriteLine("Вопроса с таким id нет в базе."); break; } using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); string query = @"DELETE FROM Questions WHERE Id = " + id; SqlCommand commandDel = new SqlCommand(query, connection); commandDel.ExecuteNonQuery(); if (id != countQuestions) { for (int i = id + 1; i <= countQuestions; i++) { query = @"UPDATE Questions SET Id = " + (i - 1) + " WHERE Id = " + i; commandDel = new SqlCommand(query, connection); commandDel.ExecuteNonQuery(); } } Console.WriteLine("Вопрос успешно удален."); connection.Close(); } break; } case "exit": { goto exit; } default: { Console.WriteLine("Команда не распознана."); break; } } Console.WriteLine(); } exit : Console.WriteLine("Выключение..."); } }