Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
4 / 4 / 1
Регистрация: 17.09.2013
Сообщений: 179

Простое Клиент-Серверное приложение

19.10.2014, 22:00. Показов 3787. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, начал осваивать андройд, и застопорился на некоторых моментах, вернее, Оно почему-то не работает, просто не коннектит к серверу. Сервер на моем домашнем компе, телефон используется для запуска клиента через Андройд Студию. Не могли бы сказать в чем ошибка?
Интернет дома подключен через мегафон 4г.
Заранее спасибо.
Клиент.
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
  import android.app.Activity;
        import android.os.Bundle;
        import android.view.Menu;
        import android.view.MenuItem;
        import android.view.View;
        import android.widget.*;
        import java.net.*;
        import java.io.*;
public class MyActivity extends Activity {
 
    private TextView Text2;
    private EditText Text1;
    public static Socket socket;
   // public final static String ip = "0";
    //public static final int SERVERPORT = 8080;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        try{
            int port = 8080;
        InetAddress serverAddr = InetAddress.getByName("83.149.48.76");
        socket = new Socket(serverAddr, port);
        }catch(UnknownHostException e){}catch(IOException e){}
        int port = 8080;
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);
        Text1 = (EditText) findViewById(R.id.editText);
        Text2 = (TextView) findViewById(R.id.textView2);
        final Button button1 = (Button) findViewById(R.id.button);
        button1.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v){
                try{
                Text2.setText("!");
                String Str = Text1.getText().toString();
                Text2.setText(Text1.getText().toString());
                PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
                out.println(Str); }
             catch (UnknownHostException e) {
 
            } catch (IOException e) {
 
            } catch (Exception e) {
 
            }
 
        }
 
        });
    }
 
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.my, menu);
        return true;
    }
 
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}
Сервер
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
46
47
package server;
import java.net.*;
import java.io.*;
 
public class ServerMain {
static int ConQ=0;   
public static final int PORT = 8080;
   ServerThread Ar[] = new ServerThread [2]; 
   public ServerMain(){ // инициализируем 
    for(int j = 0;j<2;j++)
        Ar[j] = new ServerThread();
   
   }
   public static void main(String[] args) throws IOException{
      ServerSocket s = new ServerSocket(PORT);
 
      System.out.println("Server Started");
      try {
         while (true) {
            // Блокируется до возникновения нового соединения:
            Socket socket = s.accept();
            if(socket != null) System.out.println("Первый подключен");
           // Socket socket2 = s.accept();
           // if(socket2 != null) System.out.println("второй подключен");
            try { 
               /* план костыль
               делаем два потока для каждого подключения
               считываем с первого потока, передаем во временные переменные класса MainServer 
               далее во второй поток,передаем данные и их отсылаем по адресу потока.  
               принимаем новые данные
               */ 
               new ServerThread(socket);
               System.out.println("CONQ"); 
               ConQ++;
               System.out.println(ConQ);
            }
            catch (IOException e) {
               socket.close();
           //    socket2.close();
            }
         }
      }
      finally {
         s.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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import java.io.*;
import java.net.*;
// нужно как-то сделать так, чтобы сервер занимал один порт.
public class ServerThread extends Thread{
   private Socket socket;
   private Socket socket2;
   private BufferedReader in;
   private PrintWriter out;
   public ServerThread(Socket s) throws IOException {
       socket = s;
      in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
      out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket2
            .getOutputStream())), true);
      start();
   }
 
    ServerThread() {
        
    }
   
   public void run() {
      try {
         String str = in.readLine(); 
         System.out.println("Echoing: " + str);
         out.println(str);
         str = String.valueOf(ServerMain.ConQ);
         out.println(str);
         
             
         System.out.println("now startin cycle" );
         while (true){             
           str = in.readLine();
            if (str.equals("END"))
               break;
            System.out.println("Echoing: " + str);
            out.println(str);
         }
         System.out.println("closing...");
      }
      catch (IOException e) {
         System.err.println("IO Exception");
      }
      finally {
         try {
            socket.close();
         }
         catch (IOException e) {
            System.err.println("Socket not closed");
         }
      }
   }
   
   }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.10.2014, 22:00
Ответы с готовыми решениями:

Клиент-серверное приложение
Идея такова: Мы со смартфона перехватываем handshake от какой-то wifi сети (это происходит с помощью другого приложения) и передаем его на...

Клиент-серверное приложение
Всем привет, Пытаюсь написать клиент-серверное приложение для android. Логика следующая: android устройство подключается к серверу,...

Клиент-серверное приложение
Всем привет!) Возникла такая проблема есть серверное приложение(на Java) и есть к нему клиент(так же на Java). Однако при написании...

5
 Аватар для YuraAAA
1605 / 1337 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
20.10.2014, 10:38
Цитата Сообщение от Newchap Посмотреть сообщение
InetAddress.getByName("83.149.48.76");
откуда этот IP?)
0
4 / 4 / 1
Регистрация: 17.09.2013
Сообщений: 179
20.10.2014, 16:30  [ТС]
YuraAAA, Зашел на сайт в жанре "Узнай свой айпи" - его и вбил)
Можно вот это дело мне немного разъяснить?)
0
 Аватар для YuraAAA
1605 / 1337 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
20.10.2014, 16:38
Newchap, неее, так не получится) это внешний, а нужен внутренний. Запустите приложение на эмуляторе и вбейте ip 10.0.2.2
1
4 / 4 / 1
Регистрация: 17.09.2013
Сообщений: 179
23.10.2014, 15:26  [ТС]
YuraAAA, действительно) спасибо.
Вы не могли бы подсказать, как сделать так, чтобы использовать этот локальный айпи адрес при подключение с телефона? Вернее, эмуль на компе почему-то не смог запустить, да и несильно хочется его использовать.
Т.е. когда запущено андройд студия, а телефон подключен в режиме дебага через усб?
Или новую тему создавать?
0
0 / 0 / 1
Регистрация: 13.03.2015
Сообщений: 88
02.01.2017, 22:04
А исходник есть?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.01.2017, 22:04
Помогаю со студенческими работами здесь

Клиент серверное приложение
Разрабатываю клиент серверное приложение, отправка текста в одну сторону, от клиента серверу, аля чат. Подскажите, как реализовать...

Клиент-серверное приложение с чатом
Добрый вечер! Собираюсь писать многопользовательское клиент-серверное приложения для Android. Проблема в том, что я не знаю как...

Клиент-серверное приложение android
Каким образом можно создать приложение для передачи данных через интернет? Одно устройство выступает в роли сервера, а второе - клиент.

Клиент-серверное приложение android
Ребят, такая задача: Необходимо, чтобы пользователь1 мог отправлять сообщение со своего приложения на телефоне/компьютере на другое...

Клиент-серверное приложение - посоветуйте архитектуру
Всем доброго времени суток. Пишу клиент-серверное приложение с нуля, поэтому вопросов куча) Это уже вторая тема (первая...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru