Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 在Winodws Univeral应用程序(Javascript)和客户端Android中创建服务器TCP_Windows_Win Universal App - Fatal编程技术网

Windows 在Winodws Univeral应用程序(Javascript)和客户端Android中创建服务器TCP

Windows 在Winodws Univeral应用程序(Javascript)和客户端Android中创建服务器TCP,windows,win-universal-app,Windows,Win Universal App,我想在c#中创建一个tcp服务器,并在基于javascript的universal app项目中使用它,然后创建以下代码(服务器): /C#Windows运行时组件 公共密封类服务器 { 公共服务器() { Debug.WriteLine(“服务器…”); } 公共异步无效连接() { IPAddress ip=IPAddress.Parse(“192.168.0.10”); TcpListener服务器=新的TcpListener(ip,端口号); TcpClient client=默认值(T

我想在c#中创建一个tcp服务器,并在基于javascript的universal app项目中使用它,然后创建以下代码(服务器):

/C#Windows运行时组件
公共密封类服务器
{
公共服务器()
{
Debug.WriteLine(“服务器…”);
}
公共异步无效连接()
{
IPAddress ip=IPAddress.Parse(“192.168.0.10”);
TcpListener服务器=新的TcpListener(ip,端口号);
TcpClient client=默认值(TcpClient);
尝试
{
server.Start();
Debug.WriteLine(“服务器已启动…”+ip.ToString());
}
捕获(例外e)
{
Debug.WriteLine(例如ToString());
}
while(true)
{
client=wait server.AcceptTcpClientAsync();
字节[]receivedBuffer=新字节[100];
NetworkStream=client.GetStream();
读取(receivedbuffer,0,receivedbuffer.Length);
string msg=Encoding.UTF8.GetString(receivedbuffer,0,receivedbuffer.Length);
Debug.WriteLine(msg);
}
}
}
//在HTML中
控制台日志(“测试”);
var server=new server.server();
server.connection();
控制台日志(“msg”);
我不知道为什么Debug.WriteLine和console.log方法不起作用,输出或javascript控制台中没有打印任何内容

服务器代码适用于Android客户端,如果服务器是“Console App”项目,但在“Universal App Javscript”中没有附加任何内容,则我没有警告或错误。
所以我不知道我是否做得不好,因为console.log和Debug.WriteLine不工作

我有一个与windows universal app配合使用的解决方案,我删除连接并添加以下方法:

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();
但是我仍然不知道为什么c#中的Debug.WriteLine()和javascript中的console.log()不起作用。

Debug.WriteLine()
在调试模式下工作,javascript UWP不支持内联js代码。您需要在后端js文件中编写它。
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();