0

私はソケットプログラミングの初心者です。C#を使用してPC用のアプリケーションを作成し、無線ネットワーク(LAN)を介して他の人と通信できるAndroid携帯用のアプリケーションを作成したいと思います。

Androidアプリにデータを送信するために、私はPC側で次のコードを使用しています。

    private void sendButton_Click(object sender, EventArgs e)
    {
        try
        {
            Object objData = messageTextBox.Text;
            byte[] byData = System.Text.Encoding.ASCII.GetBytes(objData.ToString ());
            _socket.Send (byData);
        }
        catch(SocketException se)
        {
            MessageBox.Show (se.Message );
        }
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        try
        {
            _socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            _ipEndPoint = new IPEndPoint(IPAddress.Parse("192.168.1.18"), 2001);
            _socket.Connect(_ipEndPoint);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
    }

Androidアプリで、次のコードでデータを受信したい:

Handler myUpdateHandler = new Handler()
       {
            public void handleMessage(Message msg)
            {
                  Log.d(appTag, "setting textview");
                  TextView tv = (TextView) findViewById(R.id.messageText);
                  tv.setText(mClientMsg);              
            }
       };

class CommsThread implements Runnable
{
    public void run()
    {
        try
        {
            Socket s = null;
            try
            {
                ss = new ServerSocket(2001);
            }
            catch (IOException e)
            {
                Log.d(appTag, e.toString());
            }
            while (!Thread.currentThread().isInterrupted())
            {
                Message m = new Message();
                Log.d(appTag, "message m = new message()");

                try
                {
                    if (s == null) s = ss.accept();
                    BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));

                    String line = null;
                    while ((line = in.readLine()) != null)
                    {

                        Log.d(appTag, line);

                        mClientMsg = line;
                    }

                    myUpdateHandler.sendMessage(m);
                }
                catch (IOException e)
                {
                    Log.d(appTag, e.toString());
                }
            }
        }
        catch (Exception e)
        {
            Log.d(appTag, e.toString());
        }
    }
}

ただし、Androidアプリケーションはデータを受信しません。

誰かが私の問題を解決するのを手伝ってくれますか?私はソケットプログラミングに非常に精通しています。

英語が下手でごめんなさい。ありがとう。

4

1 に答える 1

0

文字を読むだけにリーダーを更新して吐き出すと、何が表示されますか? 例えば

            try
            {
                if (s == null) s = ss.accept();
                BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));

                char[] recvd = new char[1];
                while (in.read(recvd, 1, 1) != -1)
                {
                    String line = new String(recvd);
                    Log.d(appTag, line);

                    mClientMsg = line;
                }

                myUpdateHandler.sendMessage(m);
            }
            catch (IOException e)
            {
                Log.d(appTag, e.toString());
            }
于 2012-08-20T17:05:24.983 に答える