我是安卓新手。我已经在 C# 中实现了某种打洞功能,并且正在尝试在 android 中实现相同的逻辑。
.NET 解决方案中的一些类,我在 android 中实现了新类,例如 TimeSpan,尽管有一些类需要实现,但我已经堆积起来了。
- 尝试在 android 中获取类,其行为类似于 .NET 中的 CancellationTokenSource
- 有一些逻辑在 C# 中运行良好,但我不知道如何在 Android 中实现。
代码:
private static Boolean rec_and_wait(TimeSpan interval)
{
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
try
{
CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
byte[] data = new byte[1024];
IAsyncResult ar = socket.BeginReceive(data, 0, data.Length, SocketFlags.None, null, null);
int res = WaitHandle.WaitAny(new WaitHandle[] { ar.AsyncWaitHandle, _cancellationTokenSource.Token.WaitHandle }, interval.Add(TimeSpan.FromSeconds(10))); // allow extra 10 seconds for network delay
switch (res)
{
case 0: // response
return true;
case WaitHandle.WaitTimeout: // time out
case 1: //cancelled
default: // should not happen
return false;
}
}
catch
{
return false;
}
finally
{
if (socket != null)
{
socket.Close();
socket.Dispose();
socket = null;
}
}
}
谢谢
最佳答案
您可以查看Xamarin 。您可以使用 C# 创建 Android、iOS、Mac 和 Windows 应用程序,Xamarin Studio 会将其编译为 native 应用程序。
关于c# - 将 C# 代码转换为 Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22500668/