Передача данных клиент-сервер - C#
Формулировка задачи:
Всем доброго.
Только начал изучать сокеты и передачу через tcp/udp. Есть клиент и сервер, коннект через udp:
Клиент имеет 2 кнопки, по нажатию одной из них передает 1 строку char на слушающий сервер. Сервер принимает строку и, в зависимости от содержания, выполняет один из методов. Передача данных на клиенте выглядит так:
А теперь, собственно, вопрос: как получить от сервера ответ и использовать его? Или по-другому: можно ли, используя такой тип передачи данных, получить ответ от сервера до закрытия соединения?
Листинг программы
- 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)
- {
- }
- }
Листинг программы
- 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;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д