首先,我是Android和dot42的新手。我建立了一个UDP监听器类,该类在Windows应用程序中可以正常工作。我正在使用System.Net.Sockets.UdpClient类。

现在,我尝试在dot42项目中使用我的UDP监听器类,但收到错误消息



我猜想,dot42中不提供此类?

有没有一种方法可以在Android应用程序中使用以下相同的代码(或仅进行少量修改)?

using System;
using System.Net;
using System.Net.Sockets;

namespace FSInterface
{
    public class UDPReceiver
    {
        private UdpClient _udpRx;
        private IPEndPoint ep;
        private int _port;

        public delegate void BytesReceive(byte[] buffer);
        public event BytesReceive OnBytesReceive;

        public UDPReceiver(int port)
        {
            _port = port;
            _udpRx = new UdpClient();
            _udpRx.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
            _udpRx.ExclusiveAddressUse = false;
            ep = new IPEndPoint(IPAddress.Any, _port);
            _udpRx.Client.Bind(ep);
            _udpRx.BeginReceive(new AsyncCallback(ReceiveCallback), null);
        }

        private void ReceiveCallback(IAsyncResult ar)
        {
            _udpRx.BeginReceive(new AsyncCallback(ReceiveCallback), null);

            byte[] buffer = _udpRx.EndReceive(ar, ref ep);

            if (OnBytesReceive != null)
            {
                OnBytesReceive(buffer);
            }
        }
    }
}

最佳答案

Dot42是一个非常有前途的项目,仍然缺少的是更完整的BCL集。

在这种情况下,您应该使用Java类。您可以在Java中找到许多客户端UDP代码示例。如果要在常规.net和dot42之间共享代码,则必须使用接口(interface)将udp方法与常规.NET和Dot42的单独实现一起使用。

10-04 10:35