#c# #.net #wcf #soap #udpclient
#c# #.net #wcf #soap #udpclient
Вопрос:
Я пишу приложение, в котором по требованию я должен взаимодействовать с одним устройством и отправлять SOAP-сообщение через UDP. Я использую класс .Net UdpClient для связи с этим устройством. Я получаю ответ от этого в UdpClient, но я получаю это как массив Byte[]. Как я могу преобразовать это в объект SOAPMessage?
public void ReceiveCallback(IAsyncResult ar)
{
UdpClient udpClient = (UdpClient)((UdpState)(ar.AsyncState)).udpClient;
IPEndPoint ipEndpt = (IPEndPoint)((UdpState)(ar.AsyncState)).ipEndpt;
Byte[] receiveBytes = udpClient.EndReceive(ar, ref ipEndpt);
string receiveString = Encoding.ASCII.GetString(receiveBytes);
//Here receiveString I want to convert to SoapMessage
BeginReceive();
}
Ответ №1:
Я бы рекомендовал использовать WCF для создания клиента для вас и реализации вашего собственного канала для обработки связи с клиентом. Вы должны быть в состоянии подключить свой код. Конечно, большая часть обмена данными с сокетами уже выполняется WCF, поэтому при использовании WCF ваш код на самом деле не нужен.
смотрите:
Ответ №2:
В этой статье MSDN показано, как создать привязку на основе транспорта UDP для WCF, которую вы можете использовать для своего клиента. Предполагая, что у вас есть доступ к WSDL для службы, создание и настройка этой UDP-привязки имеет смысл, поскольку она будет обрабатывать всю сериализацию / десериализацию за вас. Код статьи доступен как часть примеров WCF / WF для .NET 4, так что вы можете приступить к работе, просто загрузив и установив образцы.
Если у вас нет доступа к WSDL, то, по крайней мере, вы можете заглянуть в пример кода, чтобы увидеть, как обрабатывать содержимое UdpClient.