Android Сервер, P C Клиент - Как отправить данные? - PullRequest
0 голосов
/ 19 апреля 2020

Я пытался найти ответ на свой вопрос, но безрезультатно ... Единственное, что я нашел, были только темы "Android Клиент, P C Сервер", и я хочу сделать наоборот, и я не знаю, как отправить данные на телефон android.

Проблема в том, что я ничего не могу отправить на свой сервер Android. Я вижу, что сервер создан, потому что, когда я нажимаю кнопку в приложении на Android, чтобы запустить сервер на P C Клиент запускается, и если я не нажимаю, я получаю ошибку на P C не удалось подключиться.

Java:

public void onClick(View v) {

        switch (v.getId()) {
            case R.id.btn_start_receiving:

                startServerSocket();
                buttonStartReceiving.setEnabled(false);
                buttonStopReceiving.setEnabled(true);
                break;

            case R.id.btn_stop_receiving:

                //stopping server socket logic you can add yourself
                buttonStartReceiving.setEnabled(true);
                buttonStopReceiving.setEnabled(false);
                break;
        }
    }

    private void startServerSocket() {

        Thread thread = new Thread(new Runnable() {

            private String stringData = null;
            private String c = null;

            @Override
            public void run() {

                try {

                    ServerSocket ss = new ServerSocket(8080);

                    while (!end) {
                        //Server is waiting for client here, if needed
                        Socket s = ss.accept();
                        BufferedReader input = new BufferedReader(new InputStreamReader(s.getInputStream()));
                        PrintWriter output = new PrintWriter(s.getOutputStream());

                        stringData = input.readLine();
                        output.println("FROM SERVER - " + stringData.toUpperCase());
                        output.flush();

                        try {
                            Thread.sleep(1000);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        updateUI(stringData);
                        if (stringData.equalsIgnoreCase("STOP")) {
                            end = true;
                            output.close();
                            s.close();
                            break;
                        }

                        output.close();
                        s.close();
                    }
                    ss.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

        });
        thread.start();
    }

C#

private void Form1_Load(object sender, EventArgs e)
        {
            //System.Net.Sockets.TcpClient clientSocket = new System.Net.Sockets.TcpClient(); <-- I HAVE THIS ON TOP

            clientSocket.Connect("192.168.0.57", 8080); //192.168.0.57 It's my Android IP
            label1.Text = "Client Socket Program - Server Connected ..."; //Notify that connected
        }
private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                Socket s = new Socket(SocketType.Stream, ProtocolType.Tcp);
                ASCIIEncoding asen = new ASCIIEncoding();
                s.Send(asen.GetBytes("The string was recieved by the server."));
                s.Close();
            }
            catch (Exception ex)
            {

            }
        }

И при кнопке в C# я получаю ошибку: The request to send or receive data has been blocked because the socket is not connected and no address has been provided in System.Net.Socket.Send(Byte[] buffer, Int32 offset, Int32 size, SocketFlags, socketFlags) in System.Net.Sockets.Socket.Send(Byte[] buffer)

Я впервые с Сокетом. Я думаю, проблема в том, что P C Клиент не знает, куда отправить эти данные ... Но не знаю, как я могу это сделать.

Спасибо за любую помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...