windows - Opret server TCP i Winodws Univeral App (Javascript) og klient Android

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg vil oprette en tcp-server i c # og bruge den i universelle app javascript-baseret projekt, og jeg opretter følgende kode (Server):


//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>


Jeg ved ikke, hvorfor Debug.WriteLine og console.log-metoden ikke virker, intet udskrives i output eller i javascript-konsollen.


Server-koden fungerer sammen med Android-klienten, hvis serveren er 'Console App' -projekt, men i 'Universal App Javscript' er der ingen tilføjelse, jeg har ikke advarsel eller fejl.
Så jeg ved ikke, om jeg gør det dårligt, fordi console.log og Debug.WriteLine ikke virker.

Bedste reference


Jeg har en løsning, der arbejder med Windows Universal App, jeg fjerner Connection og tilføjer followings metoder:


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();


Men jeg ved stadig ikke hvorfor Debug.WriteLine () i c # og console.log () i javascript fungerer ikke.