昨年、私はラップトップからサーバーを制御するために使用できるホームオートメーションアプリケーションを作成しました-サーバーアプリケーションは次のリソースを使用しました
using System.Net;
using System.Net.Sockets;
using System.IO;
次に、ローカルネットワークからコマンドを受信するためのTCPListenerを作成しました。
TcpListener server = new TcpListener(localAddr, port);
// Start listening for client requests.
server.Start();
// Buffer for reading data
Byte[] bytes = new Byte[256];
String data = null;
while (true)
{
TcpClient client = server.AcceptTcpClient();
data = null;
// Get a stream object for reading and writing
NetworkStream stream = client.GetStream();
次に、ストリームを処理して正しいコマンドとパラメーターを取得します。これは、クライアントとサーバーの両方で問題なく機能しました。
リモコン用のメトロアプリを書き始めたので、
using Windows.Networking.Sockets;
using Windows.Networking;
次に、コマンドを送信するための非同期voidを作成しました。(申し訳ありませんが、これは非常に厄介です)
async void sendTest()
{
StreamSocket socket = new StreamSocket();
await socket.ConnectAsync(new HostName("192.168.88.1"), "13000",SocketProtectionLevel.PlainSocket);
DataWriter writer;
writer = new DataWriter(socket.OutputStream);
// Write first the length of the string as UINT32 value followed up by the string. Writing data to the writer will just store data in memory.
string stringToSend = "Hello";
writer.WriteUInt32(writer.MeasureString(stringToSend));
writer.WriteString(stringToSend);
await writer.StoreAsync();
}
例外が発生します(タイムアウト期間に応答がありません)
サーバーが応答しないことはわかっていますが、AcceptSocketなどのいくつかのことを試しましたが、それでもクライアントが接続したことを検出しません。
Metroに使用できる別のネットワークライブラリがあるかどうか、または誰かが私のサーバーリスナーの代替コードを提案できるかどうか疑問に思っています。
前もって感謝します