windows - 在 Winodws Universal App (Javascript) 和客户端 Android 中创建服务器 TCP
问题描述
我想在 c# 中创建一个 tcp 服务器并在基于通用应用程序 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 客户端,如果服务器是“Console App”项目但在“Universal App Javscript”中没有附加任何内容,我没有警告或错误。所以不知道是不是我做的不好,因为console.log和Debug.WriteLine都不行。
解决方案
我有一个适用于 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();
但我仍然不知道为什么 c# 中的 Debug.WriteLine() 和 javascript 中的 console.log() 不起作用。
推荐阅读
- python - 在 Pandas 的单元格中查找单词
- django - 如何在 dajngo admin 中创建一个不在数据库中创建字段的文本字段?
- javascript - net::ERR_FILE_NOT_FOUND - 反应图像错误
- python - 嗨,我遇到了与 django postgreSQL 相关的问题
- azure - Azure 服务总线:会话序列的有序处理
- python - 如何使用 Django ORM 将 qs.query 传递给自定义 plpgsql 函数?
- python - 在递归合并排序中跟踪调用次数和比较
- javascript - 带有客户端验证的 Django REST 框架
- javascript - 保存 DOM 操作的元素
- php - 防止垃圾邮件表单