我试图实现客户端 - 服务器通信,该通信应支持以换行符结尾的命令。做这样的事情是完全可以的:
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数据包?
答案 0 :(得分:0)
我认为在ReadAsync上使用ReadLineAsync更好:你正在读一行而不需要额外的if语句,也不需要额外的循环。