Создайте сервер TCP в Winodws Univeral App (Javascript) и клиентском Android - PullRequest
0 голосов
/ 12 мая 2018

Я хочу создать tcp сервер в c # и использовать его в проекте на основе универсального приложения на javascript, и я создаю следующий код (Сервер):

//C# Windows Runtime Component

public sealed class Server
    {
        public Server()
        {
            Debug.WriteLine("Server...");
        }

        public async void Connection()
        {
            IPAddress ip = IPAddress.Parse("192.168.0.10");
            TcpListener server = new TcpListener(ip, portNumber);
            TcpClient client = default(TcpClient);

            try
            {
                server.Start();
                Debug.WriteLine("Server started ... " + ip.ToString());
            }
            catch (Exception e)
            {
                Debug.WriteLine(e.ToString());
            }

            while (true)
            {
                client = await server.AcceptTcpClientAsync();
                byte[] recievedBuffer = new byte[100];
                NetworkStream stream = client.GetStream();
                stream.Read(recievedBuffer, 0, recievedBuffer.Length);
                string msg = Encoding.UTF8.GetString(recievedBuffer, 0, recievedBuffer.Length);
                Debug.WriteLine(msg);
            }
        }
    }


//in HTML
<script>
    console.log("test");
    var server = new Server.Server();
    server.connection();
    console.log("msg");
</script>

Я не знаю, почему Debug.WriteLine иМетод console.log не работает, ничего не выводится в выводе или в консоли javascript.

Код сервера работает с клиентом Android, если сервер является проектом «Консольное приложение», но в «Универсальном приложении Javscript» ничегодобавить, у меня нет предупреждения или ошибки.Так что я не знаю, делаю ли я плохо, потому что console.log и Debug.WriteLine не работают.

1 Ответ

0 голосов
/ 12 мая 2018

У меня есть решение, которое работает с универсальным приложением Windows, я удаляю Connection и добавляю следующие методы:

public async void StartServer()
{
            try
            {
                var streamSocketListener = new Windows.Networking.Sockets.StreamSocketListener();
                streamSocketListener.ConnectionReceived += this.StreamSocketListener_ConnectionReceived;
                await streamSocketListener.BindEndpointAsync(new HostName("192.168.0.10"), PortNumber);
            }
            catch (Exception ex){}
}

private async void StreamSocketListener_ConnectionReceived(Windows.Networking.Sockets.StreamSocketListener sender, Windows.Networking.Sockets.StreamSocketListenerConnectionReceivedEventArgs args)
{
            string request;
            using (var streamReader = new StreamReader(args.Socket.InputStream.AsStreamForRead()))
            {
                request = await streamReader.ReadLineAsync();
            }
            sender.Dispose();
}


//in main.js just call this method
new Server.Server().startServer();

Но я до сих пор не знаю, почему Debug.WriteLine () в c # и console.log() в JavaScript не работает.

...