C# WinRT <-> C# WPF 与 TCP 的连接
本文关键字:TCP 连接 WinRT WPF | 更新日期: 2023-09-27 18:31:36
我正在尝试将 WinRT 应用程序与普通 C# 程序连接。单向通信(RT 发送)很好,但我在实现另一种方式时遇到了问题。
WinRT:
var _listener=new StreamSocketListener();
_listener.ConnectionReceived += connectionReceived;
await _listener.BindServiceNameAsync("51896");
程序:
Socket s=new Socket(_client.AddressFamily,SocketType.Stream,ProtocolType.Tcp);
//s.Bind(new IPEndpoint(IPAdress.Any,0));
s.Connect(_client.Address,51896);
_client
是 WinRT 应用连接的点,我首先尝试了使用和不绑定。侦听器的事件永远不会触发,连接操作始终超时。任何帮助都非常感谢。
我能够解决这个问题。我从套接字读取数据的代码缺少一行:
public async void read()
{
using(var dr=new DataReader(_client.InputStream))
{
dr.InputStreamOptions=InputStreamOptions.Partial;
while(true)
{
await dr.LoadAsync(1024); //I was missing this line, this is the actual read from the stresm
byte[] data=new byte[dr.UnconsumedBufferLength];
dr.ReadBytes(data); //This just interprets the byte read before
if(data.Length>0)
CommandReceived.Fire(IComman.FromData(data));
await Task.Delay(15);
}
}
}