Клиентское гнездо в моем приложении не подключается к серверу Java - PullRequest
0 голосов
/ 02 декабря 2018

Мы разработали приложение для Android - просто для службы Wi-Fi на смартфоне, а затем подключаемся к Java-серверу, работающему на другом ПК. Код клиента использует IP-адрес конкретного компьютера, на котором находится серверКлиентский код также использует тот же номер порта, что и код сервера. Но клиентский сокет по-прежнему не подключается к конкретному серверу или, скорее, вообще не отвечает.

Мой код клиента:

Файл JAVA:

package com.example.android.try1;

import android.content.Context;
import android.content.Intent;
import android.net.wifi.WifiManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
import android.widget.Button;

import java.io.DataOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.net.Socket;

public class First extends AppCompatActivity {
Button bt1;
TextView smsg;
ObjectOutputStream oos;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_first);

    Button bt1 = (Button)findViewById(R.id.bt1);

    bt1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
        WifiManager wifi = (WifiManager)
          getApplicationContext().getSystemService(Context.WIFI_SERVICE);

            final boolean b = wifi.setWifiEnabled(true);

            Socket clientSocket = null;
            try {
                Log.d("Initializing client","");
                clientSocket = new Socket("192.168.43.193", 6666);

                if (clientSocket!=null)
                {
                    Log.d("Tested","connected");

                    oos = new           ObjectOutputStream(clientSocket.getOutputStream());

        oos.writeUTF("hii");

        oos.close();
                }
                else
                {
                    Log.d("Client Socket","NULL");
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    });
}

}

1 Ответ

0 голосов
/ 02 декабря 2018
      getApplicationContext().getSystemService(Context.WIFI_SERVICE);

        final boolean b = wifi.setWifiEnabled(true);

- это асинхронная операция, и для подключения к доступной сети Wi-Fi требуется некоторое время. Поэтому, если вы включили Wi-Fi, вам нужно дождаться подключения к сети, а затем попытаться подключиться.

    <receiver android:name=".NetworkChangeReceiver" >
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
            <action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
        </intent-filter>
    </receiver>

зарегистрируйтесь для трансляции изменений сети, и как только вы получите трансляцию, проверьте соединение и затем подключитесь к вашему серверу

...