У меня есть приложение, работающее на моем планшете Google Nexus, работающем на 4.3 JellyBean
, который подключается к server(IP 50.30.233.162)
. Приложение не может подключиться к серверу и выдает сообщение об ошибке как «host not reachable».Программирование сокета не может подключиться к серверу (хост невозможен)
Я проверил ->InetAddress.getLocalHost().toString();
из приложения, и это дает «localhost/127.0.0.1
» Но фактический IP устройства является «50.20.32.225
»
Я также дал разрешение
<uses-permission android:name="android.permission.INTERNET/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE/>
Я действительно любая помощь была бы замечательной.
общественный класс MainActivity расширяет активность {
Socket socket = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String serverAddress = "50.30.233.162";
new Connecting().execute(serverAddress);
}
private class Connecting extends AsyncTask<String,Integer,String>{
protected String doInBackground(String... serverAdd) {
String serverAddress = serverAdd[0];
try {
EditText editText = (EditText) findViewById(R.id.edit_message);
editText.setText(InetAddress.getLocalHost().toString());
int serverPort = 5789;
socket = new Socket(serverAddress, serverPort);
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// TODO Auto-generated method stub
return null;
}
}
Это мой код сервера
общественного класса Сервер {
/**
* @param args
*/
public static void main(String[] args) {
try {
// TupleSpaceServer tupleServer = new TupleSpaceServer();
ServerSocket server = null;
Socket client = null;
String serverIpAdd = null;
int portAdd;
serverIpAdd = InetAddress.getLocalHost().toString();
String[] serverAdd = serverIpAdd.split("/");
serverIpAdd = serverAdd[1];
portAdd = 5789;
System.out.println("Server is now online");
System.out.println("Server IP Address: " + serverIpAdd);
System.out.println("Port Address: " + portAdd);
server = new ServerSocket(portAdd);
while (true) {
client = server.accept();
System.out.println("Client Connected Address: "
+ client.getInetAddress());
// new Thread(new SessionThread(client, tupleServer)).start();
server.close();
}
} catch (IOException e) {
System.err.println(e);
}
}
}
Сервер сейчас на сайте IP-адрес сервера : 50.30.233.162 Адрес порта: 5789
Показать код .. –
Локальный адрес устройства, на котором запущено приложение, не имеет ничего общего с адресом сервера. Я не понимаю эту часть вашего вопроса. Сообщение, которое вы получаете, указывает, что указанный адрес недоступен для клиента. Код вашего клиента довольно запутан, и по какой-то причине адрес сервера жестко подключен дважды. Я предлагаю вам его очистить. – EJP
Вы используете другой IP-адрес в коде, как описано в тексте вопроса. – Henry