С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Elendil
0 / 0 / 0
Регистрация: 27.10.2014
Сообщений: 12
#1

Эмулятор Андроида и сокеты - Программирование Android

28.10.2014, 17:24. Просмотров 698. Ответов 5
Метки нет (Все метки)

День добрый. Решил все же создать тему...
Запускаю типовый пример с сокетами. Из двух консолек работает прекрасно. Прописываю я localhost, или же внешний IP - все отлично подключается.
Но мне нужно поставить клиент на Андроид и вот тут начинаются проблемы. С эмулятора клиент коннектиться не хочет. Я знаю, что localhost машины, на которой запущен эмулятор, вроде прописывается как 10.0.2.2 Пробовал внешний IP, порт пытался пробросить - 0 эмоций. Я, наверное, не совсем понимаю, что еще сделать нужно, чтоб связать сетью эмулятор и машину.

Вот код клиентской части, запускается по нажатию на кнопку.
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
void send()
{
    Socket fromserver = null;
    BufferedReader in;
    String fserver;
    try {
 
        
        fromserver = new Socket("10.0.2.2", 4444);
        in  = new BufferedReader(new InputStreamReader(fromserver.getInputStream()));
        fserver = "1";
        fserver = in.readLine();
        in.close();
        Toast.makeText(this, "отправил", Toast.LENGTH_LONG).show();
        
    } catch (UnknownHostException e) {
        e.printStackTrace();
        Toast.makeText(this, "ошибка 1", Toast.LENGTH_LONG).show();
    }
    catch (IOException e) {
        e.printStackTrace();
        Toast.makeText(this, "ошибка 2", Toast.LENGTH_LONG).show(); //ВОТ ТУТ завершается.
       }
       finally{
             if (fromserver != null){
              try {
                  fromserver.close();
              } catch (IOException e) {
                  e.printStackTrace();
              }
             }
       }
  
  }

Вот типовый код сервера из примеров:
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
public class Server {
 
  public static void main(String[] args) throws IOException {
    System.out.println("Welcome to Server side");
    BufferedReader in = null;
    PrintWriter    out= null;
 
    ServerSocket servers = null;
    Socket fromclient = null;
 
    // create server socket
    try {
      servers = new ServerSocket(4444);
    } catch (IOException e) {
      System.out.println("Couldn't listen to port 4444");
      System.exit(-1);
    }
 
    try {
      System.out.print("Waiting for a client...");
      fromclient= servers.accept();
      System.out.println("Client connected");
    } catch (IOException e) {
      System.out.println("Can't accept");
      System.exit(-1);
    }
 
    in  = new BufferedReader(new 
     InputStreamReader(fromclient.getInputStream()));
    out = new PrintWriter(fromclient.getOutputStream(),true);
    String input, output;
 
    System.out.println("Wait for messages");
    while ((input = in.readLine()) != null) {
     if (input.equalsIgnoreCase("exit")) 
         break;
     out.println("S ::: "+String.valueOf(Integer.parseInt(input)+1));
     System.out.println(input);
    }
    out.close();
    in.close();
    fromclient.close();
    servers.close();
  }
}

Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class Client{
  public static void main(String[] args) throws IOException {
    System.out.println("Welcome to Client side");
 
    Socket fromserver = null;
    fromserver = new Socket("185.37.57.61", 4444);
    BufferedReader in  = new BufferedReader(new InputStreamReader(fromserver.getInputStream()));
    PrintWriter    out = new 
     PrintWriter(fromserver.getOutputStream(),true);
    BufferedReader inu = new 
     BufferedReader(new InputStreamReader(System.in));
 
    String fuser,fserver;
 
    while ((fuser = inu.readLine())!=null) {
      out.println(fuser);
      fserver = in.readLine();
      System.out.println(fserver);
      if (fuser.equalsIgnoreCase("close")) break;
      if (fuser.equalsIgnoreCase("exit")) break;
    }
 
    out.close();
    in.close();
    inu.close();
    fromserver.close();
  }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.10.2014, 17:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Эмулятор Андроида и сокеты (Программирование Android):

Eclipse не могу запустить эмулятор Андроида - Программирование Android
Моя первая программа Hello World, все сделал как надо и эмулятор создан и все ... но вот такой лог запуска: Во первых...

Не могу запустить эмулятор Андроида на Windows 7 - Программирование Android
Здравствуйте всем! Исходные данные: Комп с Windows 7 (Intel Celeron, 2 Гб ОЗУ). Версия Java - 1.8.0_20. В переменных среды (системные...

Эмулятор андроида bluestacks - Программирование
доброго времени суток помогите пожалуйста решить проблему. После обновления онлайн иргы alliance wars это приложение на BlueStacksе не...

2d игра для андроида - Программирование Android
Здрасте, подскажите трудно ли будет напистаь что то вроде человечек бежит и на встречу ему кубики и он должен перепрыгивать, трудно ли...

Создание игр с андроида - Программирование Android
Программа которая создаёт игры на андроиде

Верстка для андроида - Программирование Android
Нужна ваша помощь, а именно студента для верстки под андроид.

5
Elendil
0 / 0 / 0
Регистрация: 27.10.2014
Сообщений: 12
30.10.2014, 13:05  [ТС] #2
Попробовал на смартфон скинуть - тоже не законнектился. Порт открыт, как 2ip показывает. Опять же клиент с консоли подключается, а тот же самый код по нажатию кнопки в приложении Android - нет.
0
tankomaz
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ
440 / 439 / 33
Регистрация: 14.10.2012
Сообщений: 1,147
Записей в блоге: 9
03.11.2014, 01:07 #3
в манифесте прописали разрешение на работу с сетью? (кстати на форуме есть андроид раздел)
0
Elendil
0 / 0 / 0
Регистрация: 27.10.2014
Сообщений: 12
03.11.2014, 10:19  [ТС] #4
Нет, Манифест не трогал.
Я подумал, что сетей тут больше чем Андроида)
0
tankomaz
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ
440 / 439 / 33
Регистрация: 14.10.2012
Сообщений: 1,147
Записей в блоге: 9
03.11.2014, 11:59 #5
Пропишите разрешение - будет работать, иначе андроид ложложит ограничение на работу
0
Elendil
0 / 0 / 0
Регистрация: 27.10.2014
Сообщений: 12
04.11.2014, 07:58  [ТС] #6
Спасибо! Прописал разрешение, все заработало. Вопрос снят.
Добавил в манифесте это:
<uses-permission
android:name="android.permission.INTERNET" />
0
04.11.2014, 07:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.11.2014, 07:58
Привет! Вот еще темы с ответами:

Программы для андроида - Программирование Android
Вот хотел спросить на каком языке пишуть программы для андроида? Лазил в инети нашел что на java, но java пакуется в формат jar,...

IntelliJ IDEA для Андроида - Программирование Android
Подскажите можно ли в IntelliJ IDEA делать приложения для Андрода ?

Java приложение для андроида - Программирование Android
здравствуйте...вопрос такой, имеется архив с приложением(в тхт файлах) нужно запустить его в eclipse...в программировании я человек новый,...

Свой Браузер для андроида - Программирование Android
мы изготовили сайт, большое количество пользователей этого сайта будут заходить с андроидов очень не хочется создавать приложение...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.