Передача данных клиент-сервер - 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;