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

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

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

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

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

textual
Листинг программы
//Цикл сервера
Console.WriteLine("Сервер ожидает {0}", listener.LocalEndpoint);
                    TcpClient client = listener.AcceptTcpClient();
                    NetworkStream io = client.GetStream();
 
                    Console.WriteLine("Принято соединение от {0}", client.Client.RemoteEndPoint);
 
                    Console.WriteLine("Принимаем данные...");
                    byte[] buffer = new byte[255];
                    int bytesread = io.Read(buffer, 0, buffer.Length);
                    string getmessage = Encoding.Default.GetString(buffer);
                    Console.WriteLine("Получили сообщение от клиента: {0}", getmessage);
 
                    Console.WriteLine("Отправляем сообщение...");
                    io.Write(message, 0, message.Length);
 
                    Console.WriteLine("Закрытие соединения");
                    client.Close();
 
//Клиент
Socket sck = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
 
            IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 2200);
            sck.Connect(endPoint);
 
            NetworkStream myNtStream = new NetworkStream(sck);
            byte[] message2 = Encoding.Default.GetBytes("Hello server!");
            myNtStream.Write(message2, 0, message2.Length);
 
 
            byte[] buffer = new byte[255];
            int rec = sck.Receive(buffer, 0, buffer.Length, 0);
 
            string message1 = Encoding.Default.GetString(buffer);
 
            label1.Text = message1;

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


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

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

11   голосов , оценка 4 из 5
Похожие ответы