0

我正在尝试将 WinRT 应用程序与普通的 C# 程序连接起来。一种方式的通信(RT 发送)很好,但我在实现另一种方式时遇到了问题。

温特

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 应用程序连接的端点,我先尝试了绑定和不绑定。侦听器的事件永远不会被触发,并且连接操作总是超时。非常感谢任何帮助。

4

1 回答 1

0

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

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);
    }
  }
}
于 2013-09-17T06:39:44.833 回答