Передача данных клиент-сервер - C#

Узнай цену своей работы

Формулировка задачи:

Всем доброго. Только начал изучать сокеты и передачу через tcp/udp. Есть клиент и сервер, коннект через udp:
Листинг программы
  1. private void buttonReceive_Click(object sender, EventArgs e)
  2. {
  3. stopReceive = false;
  4. rec = new Thread(new ThreadStart(Receive));
  5. rec.Start();
  6. buttonReceive.Text = "Запущено!";
  7. buttonReceive.Enabled = false;
  8. }
  9. void Receive()
  10. {
  11. try
  12. {
  13. while (true)
  14. {
  15. IPEndPoint ipendpoint = null;
  16. byte[] message = udp.Receive(ref ipendpoint);
  17. ShowMessage(Encoding.Default.GetString(message));
  18. if (stopReceive == true) break;
  19. }
  20. }
  21. catch(Exception e)
  22. {
  23. }
  24. }
Клиент имеет 2 кнопки, по нажатию одной из них передает 1 строку char на слушающий сервер. Сервер принимает строку и, в зависимости от содержания, выполняет один из методов. Передача данных на клиенте выглядит так:
Листинг программы
  1. private void buttonSend_Click(object sender, EventArgs e)
  2. {
  3. UdpClient udp = new UdpClient();
  4. IPAddress ipaddress = IPAddress.Parse(textBoxAddress.Text);
  5. IPEndPoint ipendpoint = new IPEndPoint(ipaddress, 8000);
  6. byte[] message = Encoding.Default.GetBytes("1");
  7. int sended = udp.Send(message, message.Length, ipendpoint);
  8. udp.Close();
  9. }
А теперь, собственно, вопрос: как получить от сервера ответ и использовать его? Или по-другому: можно ли, используя такой тип передачи данных, получить ответ от сервера до закрытия соединения?

Решение задачи: «Передача данных клиент-сервер»

textual
Листинг программы
  1. //Цикл сервера
  2. Console.WriteLine("Сервер ожидает {0}", listener.LocalEndpoint);
  3.                     TcpClient client = listener.AcceptTcpClient();
  4.                     NetworkStream io = client.GetStream();
  5.  
  6.                     Console.WriteLine("Принято соединение от {0}", client.Client.RemoteEndPoint);
  7.  
  8.                     Console.WriteLine("Принимаем данные...");
  9.                     byte[] buffer = new byte[255];
  10.                     int bytesread = io.Read(buffer, 0, buffer.Length);
  11.                     string getmessage = Encoding.Default.GetString(buffer);
  12.                     Console.WriteLine("Получили сообщение от клиента: {0}", getmessage);
  13.  
  14.                     Console.WriteLine("Отправляем сообщение...");
  15.                     io.Write(message, 0, message.Length);
  16.  
  17.                     Console.WriteLine("Закрытие соединения");
  18.                     client.Close();
  19.  
  20. //Клиент
  21. Socket sck = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  22.  
  23.             IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 2200);
  24.             sck.Connect(endPoint);
  25.  
  26.             NetworkStream myNtStream = new NetworkStream(sck);
  27.             byte[] message2 = Encoding.Default.GetBytes("Hello server!");
  28.             myNtStream.Write(message2, 0, message2.Length);
  29.  
  30.  
  31.             byte[] buffer = new byte[255];
  32.             int rec = sck.Receive(buffer, 0, buffer.Length, 0);
  33.  
  34.             string message1 = Encoding.Default.GetString(buffer);
  35.  
  36.             label1.Text = message1;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы