- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我目前正在研究使用 websockets 在客户端/代理和服务器之间进行通信,并决定为此目的使用 C#。尽管我之前使用过 Websockets 和 C#,但这是我第一次同时使用这两者。第一次尝试使用以下指南: http://www.codeproject.com/Articles/618032/Using-WebSocket-in-NET-Part
public static void Main(string[] args)
{
Task t = Echo();
t.Wait();
}
private static async Task Echo()
{
using (ClientWebSocket ws = new ClientWebSocket())
{
Uri serverUri = new Uri("ws://localhost:49889/");
await ws.ConnectAsync(serverUri, CancellationToken.None);
while (ws.State == WebSocketState.Open)
{
Console.Write("Input message ('exit' to exit): ");
string msg = Console.ReadLine();
if (msg == "exit")
{
break;
}
ArraySegment<byte> bytesToSend = new ArraySegment<byte>(Encoding.UTF8.GetBytes(msg));
await ws.SendAsync(bytesToSend, WebSocketMessageType.Text, true, CancellationToken.None);
ArraySegment<byte> bytesReceived = new ArraySegment<byte>(new byte[1024]);
WebSocketReceiveResult result = await ws.ReceiveAsync(bytesReceived, CancellationToken.None);
Console.WriteLine(Encoding.UTF8.GetString(bytesReceived.Array, 0, result.Count));
}
}
}
虽然这似乎按预期工作,但我想知道是否有任何方法可以将 .NET 中的内置流/读取器与 ClientWebSocket 一起使用?
我觉得奇怪的是,Microsoft 拥有一套丰富且完善的流和读取器类,但随后决定实现 ClientWebSocket,它只能读取必须手动处理的字节 block 。
假设我想传输 xml,将套接字流包装在 XmlTextReader 中对我来说很容易,但这对于 ClientWebSocket 并不明显。
最佳答案
为什么不使用字节数组?使用 XmlDictionaryReader.CreateTextReader which accept byte array from System.Runtime.Serialization assembly? 怎么样? . Working code :
namespace XmlReaderOnByteArray
{
using System;
using System.Xml;
class Program
{
public static void Main(string[] args)
{
// Some XML
string xml = @"<?xml version=""1.0"" encoding=""UTF-8""?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>";
// Get buffer from string
ArraySegment<byte> arraySegment = new ArraySegment<byte>(System.Text.Encoding.UTF8.GetBytes(xml));
// Use XmlDictionaryReader.CreateTextReader to create reader on byte array
using (var reader = XmlDictionaryReader.CreateTextReader(arraySegment.Array, new XmlDictionaryReaderQuotas())) {
while (reader.Read()) {
Console.WriteLine("{0}[{1}] => {2}", reader.Name, reader.NodeType, reader.Value);
}
}
}
}
}
关于c# - 将 c# ClientWebSocket 与流一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38917094/
我正在使用 System.Net.WebSockets.ClientWebSocket在 .NET 4.7 应用程序中,并且在尝试使依赖于它的代码可测试时遇到问题。 ClientWebSocket是一
我正在 Xamarin.Forms 中编写一个面向 .Net Standard 2.1 的应用程序,主要专注于 Android 构建。 我有一些 websocket 客户端代码可以连接到我的安全自签名
我目前正在研究使用 websockets 在客户端/代理和服务器之间进行通信,并决定为此目的使用 C#。尽管我之前使用过 Websockets 和 C#,但这是我第一次同时使用这两者。第一次尝试使用以
我在 Osx 上实现安全的网络套接字客户端时遇到问题。我正在使用 System.Net.WebSockets 中的 ClientWebSocket。这是一些测试代码: static async
document不清楚System.Net.WebSockets.ClientWebSocket的线程安全性类(class)。 拨打 SendAsync 安全吗?多个线程同时调用的方法? 最佳答案 它
客户端环境是 Xamarin Android Native TLS 1.2 SSL/TLS 实现(boringssl aka btls),使用 System.Net.WebSockets.Client
我已经按照 this 在 .net 核心中构建了一个 WebSocket Web 应用程序和 this或 this教程。现在我正在尝试使用 Microsoft.AspNetCore.TestHost
我正在使用 System.Net.WebSockets.ClientWebSocket 创建一个 C# WebSocket 客户端以连接到我不拥有源代码的服务器。到目前为止一切正常,但我希望“正确”断
我在 Windows 上运行以下 websocket 客户端代码,一切正常 - 正如预期的那样。但是,如果代码是为 linux-arm 发布并复制到 RaspberryPi3(在 Raspian 下运
我需要在 ClientWebSocket 中设置“User-Agent”HTTP header 对象,但这是不可能的。虽然有ClientWebSocket.SetRequestHeader(heade
我尝试在 .Net 中使用谷歌搜索支持 SSL(和代理)的 echo 客户端的示例代码,我有不支持 SSL 和代理的简单 echo 客户端,但我需要已通过证书实现 SSL 的客户端(自签名) 我正在使
我想为连接到 Web 套接字服务器时使用的 Web 套接字客户端指定 ssl 证书。 唯一constructor对于 System.Net.WebSockets.ClientWebSocket有 0
我正在尝试实现WebSocket,但是每次尝试阅读它时,都会引发“远程方在未完成关闭握手的情况下关闭了WebSocket连接”。错误。 这是我的代码: string url = "wss://ws.u
网络套接字是我的同事用 javascript 编写的。我成功连接了。首先,我必须使用测试帐户登录应用程序。我必须通过 json 发送电子邮件和密码。我已经使用 NuGet 安装了 Json.Net 数
使用 ClientWebSocket.SetHeader 的明显答案会引发异常,因为它是 protected header : System.ArgumentException occurred M
我是一名优秀的程序员,十分优秀!