2012-07-04 6 views
0

Я делаю приложение UDP, в котором я получаю сообщения от клиента udp и отправляю результат обратно клиенту udp ... но теперь я хотите установить ответы сервера udp на основе запроса ... например, если udp-клиент отправит на сервер сообщение «Hello», тогда сервер реагирует соответственно, что если клиент отправляет «мир», тогда сервер реагирует соответственно, что ... .В короткий моя проблема заключается в том, что я не могу зачитать строку, я получаю на сайте сервера ..... это окно формы приложения в C#udp server отвечает на основании запроса, полученного от клиента udp

, например, вот код:

 int recv; 
     byte[] data = new byte[1024]; 


     IPEndPoint endpoint = new IPEndPoint(IPAddress.Loopback, 1235); 

     Socket newsocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); 
     newsocket.Bind(endpoint); 

     MessageBox.Show("waiting for a client.."); 

     IPEndPoint sen = new IPEndPoint(IPAddress.Loopback, 5001); 
     EndPoint tmp = (EndPoint)sen; 

     recv = newsocket.ReceiveFrom(data, ref tmp); 

     MessageBox.Show(" message recieved", tmp.ToString()); 

     MessageBox.Show(Encoding.ASCII.GetString(data, 0, recv)); 

теперь я хочу прочитать строку, которую я получаю в «recv» integer, на которой я мог бы установить ответы соответственно, что ... Пожалуйста, скажите мне, как я могу это сделать ...

+0

Что отображается в последнем окне сообщений? он предположительно показывает строку в окне сообщения ... –

ответ

0

см. Это link может быть, это может помочь, ваш код швы быть Rigth, но если она не работает, попробуйте изменить кодировку

сравнить данные в строку вам нужно сначала преобразовать его в строку с этой строки кода

Encoding.ASCII.GetString(data, 0, recv) 

использование как этот

recv = newsocket.ReceiveFrom(data, ref tmp); 
     string receiver = Encoding.ASCII.GetString(data, 0, recv); 
      if (receiver == "Hello"){"do something"} 
+0

Постарайтесь предоставить хотя бы НЕКОТОРУЮ информацию по вашей ссылке ... –

+0

все сделано, но я думаю, что это код, который должен вернуть строку, и он не сообщает любой erro об этом ... –

+0

Большое спасибо, ребята, мой код работает, в коде нет проблем, но я хочу установить условие для проверки строки в переменной «recv», например .... if (recv == "hello"), затем {do something} else if (recv == "world"), затем {do something} – user1465977

Смежные вопросы