0

私はudpクライアントからメッセージを受信し、結果をudpクライアントに送り返すことができるUDPアプリケーションを作成しています...しかし、今はリクエストに基づいてudpサーバーの応答を設定したい...のようにたとえば、udpクライアントが「Hello」メッセージをサーバーに送信すると、サーバーはそれに応じて反応し、クライアントが「world」を送信するとサーバーはそれに応じて反応します....要するに、私の問題は、文字列を読み取ることができないことです.私はサーバー サイトで受信しています.....これは C# のウィンドウ フォーム アプリケーションです

たとえば、コードは次のとおりです。

        int recv;
        byte[] data = new byte[1024];


        IPEndPoint endpoint = new IPEndPoint(IPAddress.Loopback, 1235);

        Socket newsocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
        newsocket.Bind(endpoint);

        MessageBox.Show("waiting for a client..");

        IPEndPoint sen = new IPEndPoint(IPAddress.Loopback, 5001);
        EndPoint tmp = (EndPoint)sen;

        recv = newsocket.ReceiveFrom(data, ref tmp);

        MessageBox.Show(" message recieved", tmp.ToString());

        MessageBox.Show(Encoding.ASCII.GetString(data, 0, recv));

今、私はそれに応じて応答を設定できる「recv」整数で受信している文字列を読みたい..どうすればそれを行うことができるか教えてください...

4

1 に答える 1

0

この リンクを参照してください。コードの縫い目は正しいはずですが、うまくいかない場合は、エンコーディングを変更してみてください。

データを文字列と比較するには、最初にこのコード行で文字列に変換する必要があります

Encoding.ASCII.GetString(data, 0, recv)

このように使う

 recv = newsocket.ReceiveFrom(data, ref tmp);
        string receiver = Encoding.ASCII.GetString(data, 0, recv);
            if (receiver == "Hello"){"do something"}
于 2012-07-04T15:48:40.983 に答える