Windows 在Winodws Univeral应用程序(Javascript)和客户端Android中创建服务器TCP
我想在c#中创建一个tcp服务器,并在基于javascript的universal app项目中使用它,然后创建以下代码(服务器):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#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();