Передача данных между Android-приложения на устройстве на ПК NetBeans Java-сервер - PullRequest
0 голосов
/ 25 января 2019

Добрый день, я разрабатываю приложение для Android для отправки значения textView на сервер, созданный в Java NetBeans, я следовал учебнику на YouTube [https://www.youtube.com/watch?v=29y4X65ZUwE], однако, когда я запускаю сервер первым, он не отправляет данные через. Я также подключен к той же сети Wi-Fi.

РЕДАКТИРОВАТЬ: Когда я использую код System.out.println(ss.getInetAddress()); в своем классе сервера в Java, я получаю 0.0.0.0 в качестве IP-адреса, но я подключен к сети Wi-Fi.

Вот мой класс AsyncTask (написано в Android Studio):

public class SendData extends AsyncTask<String, Void, Void> {

Socket s;
DataOutputStream dos;
PrintWriter pw;

@Override
protected Void doInBackground(String... voids) {

    String number = voids[0];
    try{

        s = new Socket("196.248.139.178", 6000);

        pw = new PrintWriter(s.getOutputStream());
        pw.write(number);
        pw.flush();
        pw.close();
        s.close();

    }catch(IOException ioe){

        ioe.printStackTrace();
    }
    return null;
  }
}

Вот мой MainActivity (называется классом Orders, написанный в android studio):

public class Orders extends AppCompatActivity {

Button  send;
EditText orderNum;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_orders);

    orderNum = findViewById(R.id.orderNum);

    send = findViewById(R.id.send);

    send.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            SendData numSender = new SendData();
            numSender.execute(orderNum.getText().toString());

        }
    });
  }
}

Ниже приведен код моего сервера, написанный на NetBeans, он включает JFrame с JTextArea для отображения данных, отправляемых с телефона Android:

public class OrderList extends javax.swing.JFrame {

static Socket s;
static ServerSocket ss;
static InputStreamReader isr;
static BufferedReader br;
static String numbers;


/**
 * Creates new form OrderList
 */
public OrderList() {

    initComponents();   
}
public static void main(String args[]) {

    /* Create and display the form */
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new OrderList().setVisible(true);
        }
    });

     try{

         ss = new ServerSocket(6000);
         while(true){

             s = ss.accept();
             isr = new InputStreamReader(s.getInputStream());
             br = new BufferedReader(isr);
             numbers = br.readLine();

             System.out.println(numbers);
             // orderNumList is the text area where data is going to be set.
             if(orderNumList.getText().equals("")){

                 orderNumList.setText(numbers);
             }
             else{
                 orderNumList.setText(orderNumList.getText()+ "\n" + numbers);

             }

         }

     }catch(IOException e){

         e.printStackTrace();
     }
}

Любые советы и помощь будут высоко оценены.

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Попробуйте прочитать символ за символом, потому что чтение построчно может блокировать. Проверьте, что: BufferedReader, обнаруживает, осталось ли текст для чтения

0 голосов
/ 28 января 2019

Также проверьте, не блокирует ли брандмауэр Windows соединение.

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