Я работаю с Xamarin.Forms на отправку / получение пакета UDP. ниже приведены краткие коды, сообщение отправляется на дальний конец и возвращается сообщение Udp, захваченное событием ReceiveFromAsync()
.
во время тестирования. Оно работает хорошо в среде Andriod, однако на платформе iOS, ReceiveFromAsync()
НЕ запускается.
Я использую VS2019 16.4.5 с Xamarin.Forms 4.3.0.908675.
Кто-нибудь встречался с таким случаем ранее? я ценю, что ты пролил немного света на это.
var udpSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
udpSocket.Bind(localIpEndpoint);
udpSocket.Connect(cloudServer, cloudPort);
udpSocket.Send(mesgBytes);
SocketAsyncEventArgs udpSocketEventHandler;
byte[] buffer = new byte[1024];
udpSocketEventHandler = new SocketAsyncEventArgs();
udpSocketEventHandler.RemoteEndPoint = remoteIpEp;
udpSocketEventHandler.Completed += udpSocketEventHandler_Completed;
udpSocketEventHandler.SetBuffer(buffer, 0, buffer.Length);
if (!udpSocket.ReceiveFromAsync(udpSocketEventHandler))
{
ProcessReceiedData(udpSocketEventHandler);
}
private static void UdpReceived_Completed(object sender, SocketAsyncEventArgs e)
{
ProcessReceiedData(e);
}
private static void ProcessReceiedData(SocketAsyncEventArgs e)
{
switch (e.LastOperation)
{
case SocketAsyncOperation.ReceiveFrom:
if (e.BytesTransferred > 0 && e.SocketError == SocketError.Success )
{
// data processing here
}
break;
default:
break;
}
}