2

Android デバイスから PC プログラム (C#) にいくつかのジャイロスコープの読み取り値を送信したいと考えています。私はソケットプログラミングを介してそれを行うことにしました。Android フォンはクライアントとして機能し、コンピューター上で実行されるプログラムはサーバーとして機能します。今のところ「こんにちは」を送信する私のAndroidコードは次のとおりです。

try
{
    socket = new Socket("192.168.1.3", 1071);
PrintWriter pw=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())));
pw.println("Hello");
    socket.close();
}
catch (UnknownHostException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }

これで、C# サーバー コードは次のようになります。

        listener = new TcpListener(1071);
        listener.Start();
        Socket soc;
        while (true)
        {
             soc= listener.AcceptSocket();
            Console.WriteLine("Connection accepted from " + soc.RemoteEndPoint);

            byte[] b = new byte[10000];
            int k = soc.Receive(b);
            Console.WriteLine(k);
            char cc = ' ';
            string test = null;
            Console.WriteLine("Recieved...");

            for (int i = 0; i < k - 1; i++)
            {
                Console.Write(Convert.ToChar(b[i]));
                cc = Convert.ToChar(b[i]);
                test += cc.ToString();
            }
        }
        soc.Close();
    }

問題は、接続が確立されていることですが、サーバーで何も受信できません。k の値は常にゼロです。しかし、接続は成功しています。

Output:
Connection accepted from 192.168.1.6:36742
0
Recieved...
Connection accepted from 192.168.1.6:57013
0
Recieved...

等々。

何が問題なのか誰か教えてもらえますか? UTF-8 などのエンコーディングの問題が存在しないことは確かです。

4

1 に答える 1

3

PrintWriterを閉じる前にフラッシュを逃したようです。

于 2012-11-30T16:43:47.347 に答える