Передача данных клиент-сервер - 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;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д