0

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

_clientWinRT アプリが接続するエンドポイントです。最初にバインドして、またはバインドせずに試しました。リスナーのイベントは発生せず、接続操作は常にタイムアウトします。どんな助けでも大歓迎です。

4

1 に答える 1

0

この問題を解決できました。ソケットからデータを読み取るコードに次の 1 行がありませんでした。

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 に答える