- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试实现客户端-服务器通信,它应该支持以换行符结尾的命令。做这样的事情完全可以吗:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
RunServer();
}
async private Task RunServer()
{
var listener = new TcpListener(IPAddress.Any, 1065);
listener.Start();
while (true)
{
TcpClient client = await listener.AcceptTcpClientAsync();
HandleClient(client);
}
}
async private Task HandleClient(TcpClient client)
{
using (var networkStream = client.GetStream())
using (var reader = new StreamReader(networkStream))
{
var dataFromServer = await reader.ReadLineAsync(); // here
MessageBox.Show("Received \"" + dataFromServer + "\"");
}
}
}
或者我应该使用 AsyncRead
并检查接收到的缓冲区是否包含 '\n' 字符?
它在任何情况下都可以工作吗,即使消息将被分成几个 IP 数据包?
最佳答案
我认为使用 ReadLineAsync 优于 ReadAsync:您正在读取一行,不需要额外的 if 语句,也不需要额外的循环。
关于c# - 使用 ReadLineAsync 进行客户端-服务器通信是否完全可以,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33393607/
使用以下代码启动一个新的控制台应用程序 - class Program { static void Main(string[] args) { while (true)
我正在尝试实现客户端-服务器通信,它应该支持以换行符结尾的命令。做这样的事情完全可以吗: public partial class MainWindow : Window { public M
当我通过调用 CancellationTokenSource 的 Cancel() 方法取消具有以下内容的异步方法时,它最终会停止。然而,由于 Console.WriteLine(await read
当我创建尝试读取这样的行时,Stream.Position 在第一次调用 StreamReader.ReadLineAsync 后更改一次,然后在多次调用后不会更改。 var stream = new
有谁知道为什么 ReadLineAsync 和 ReadToEndAsync 比同步对应的 ReadLine 和 ReadToEnd 慢得多?如果我正在等待多个调用,我可以理解这种缓慢,但事实并非如此
通过所有异步/等待(来自线程池),我遇到了一个有趣的挑战。 我有一个在 WPF 应用程序中运行的 TCP 服务器,该应用程序接受客户端并将它们存储在 List<> 中像这样: private List
我在一个项目中坚持使用 .NET 4.0。 StreamReader 不提供异步或开始/结束版本的 ReadLine。底层 Stream 对象具有 BeginRead/BeginEnd,但它们采用字节
使用 Blazor wasm 应用程序(NET 标准 2.1)和 BlazorFileReader在下面的代码片段中(缩短,在我的应用程序中,它被分为一个 .razor 文件和一个 .razor.cs
我是一名优秀的程序员,十分优秀!