Не удается подключиться к приложению Xamarin для Android, которое работает как сервер - PullRequest
0 голосов
/ 11 февраля 2019

Я создал приложение Xamarin Forms, которое реализует код, указанный здесь для настройки конечной точки: https://docs.microsoft.com/en-us/dotnet/framework/network-programming/asynchronous-server-socket-example

Я добавил разрешение ИНТЕРНЕТ в AndroidManifest.xml следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.companyname.Server">
    <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="27" />
    <uses-permission android:name="android.permission.INTERNET" />
    <application android:label="Server.Android"></application>
</manifest>

Затем я вызываю метод StartListening из файла MainActivity.cs по умолчанию следующим образом:

using System;
using System.Threading;
using Android.App;
using Android.Content.PM;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;

namespace Server.Droid
{
    [Activity(Label = "Server", Icon = "@mipmap/icon", Theme = "@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
    {
        protected override void OnCreate(Bundle savedInstanceState)
        {
            TabLayoutResource = Resource.Layout.Tabbar;
            ToolbarResource = Resource.Layout.Toolbar;

            base.OnCreate(savedInstanceState);
            global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
            LoadApplication(new App());
            new Thread(new ThreadStart(delegate {
                AsynchronousSocketListener.StartListening();
            })).Start();
        }
    }
}

Я прошел через отладчик и вижу, что конечная точка создана.Сейчас я пытаюсь подключиться к приложению через приложение IP address. Я вижу, что в этой строке кода назначено StartListening:

IPAddress ipAddress = ipHostInfo.AddressList[0];

C:\> telnet 10.x.x.x 11000

Я всегда получаю сообщение об ошибке

Не удалось открыть соединение с хостом через порт 11000: Ошибка подключения

Я пытался включить и выключить брандмауэр Windows, но безрезультатно.Я убедился, что мое приложение прослушивает порт 11000 с помощью Netstat для Android, работающего на эмуляторе.

...