【发布时间】:2016-01-28 09:03:24
【问题描述】:
我正在尝试实现客户端-服务器通信,它应该支持以换行符结尾的命令。这样做完全可以吗:
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 数据包?
【问题讨论】:
-
我投票结束这个问题,因为它属于CodeReview
-
@FrozenHeart:有什么理由不使用 SignalR 吗? SignalR 比原始套接字更易于使用几个数量级。
标签: c# tcp network-programming