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 应用连接的点,我首先尝试了使用和不绑定。侦听器的事件永远不会触发,连接操作始终超时。任何帮助都非常感谢。

C# WinRT <-> C# WPF 与 TCP 的连接

我能够解决这个问题。我从套接字读取数据的代码缺少一行:

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);
    }
  }
}