1

C# アプリケーションから Android エミュレーターまたはデバイスに TCP 経由でメッセージを送信したいと考えています。Google で検索したところ、Android クライアントと C# サーバーで最大の結果が得られましたが、達成したい結果は得られませんでした。

これが私が試したことです。たぶん私は間違った方法で取り組んでいますが、私が望むのは、TCP 経由で Android デバイスにメッセージを送信することです。

メッセージを送信するためのサーバー コード:

    private static int port = 4444;
    private static TcpListener listener;
    private static Thread thread;
    private static int clientId = 0;

  listener = new TcpListener(new IPAddress(new byte[] { 127, 0, 0, 1 }), port);
        thread = new Thread(new ThreadStart(Listen));
        thread.Start();

private static void Listen()
    {
        listener.Start();
        MessageBox.Show("Listening on: " + port.ToString());

        while (true)
        {
            MessageBox.Show("Waiting for connection....");
            MessageBox.Show("Client No: " + clientId);
            TcpClient client = listener.AcceptTcpClient();
            Thread listenThread = new Thread(new ParameterizedThreadStart(ListenThread));
            listenThread.Start(client);
        }
    }

    private static void ListenThread(Object client)
    {

        NetworkStream netstream = ((TcpClient)client).GetStream();
        MessageBox.Show("Request made");
        clientId = clientId + 1;
        // String message = "Hello world";
        byte[] resMessage = Encoding.ASCII.GetBytes(clientId.ToString());
        netstream.Write(resMessage, 0, resMessage.Length);
        netstream.Close();
    }

クライアントコード

private TextView textDisplay;
Socket socket;
private static final int TCP_SERVER_PORT = 4444;
ServerSocket ss = null;
    try {
        ss = new ServerSocket(TCP_SERVER_PORT);
        //ss.setSoTimeout(10000);
        //accept connections
        Socket s = ss.accept();
        BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
        BufferedWriter out = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
        //receive a message
        String incomingMsg = in.readLine() + System.getProperty("line.separator");
        Log.d("TcpServer", "received: " + incomingMsg);
        textDisplay.append("received: " + incomingMsg);
        //send a message
        String outgoingMsg = "goodbye from port " + TCP_SERVER_PORT + System.getProperty("line.separator");
        out.write(outgoingMsg);
        out.flush();
        Log.d("TcpServer", "sent: " + outgoingMsg);
        textDisplay.append("sent: " + outgoingMsg);
        //SystemClock.sleep(5000);
        s.close();
    } catch (InterruptedIOException e) {
        //if timeout occurs
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (ss != null) {
            try {
                ss.close();
            } catch (IOException e) {
                Log.d("Error",e.toString());
            }
        }
    }
4

1 に答える 1