Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
maybeTM
10 / 10 / 2
Регистрация: 30.10.2014
Сообщений: 145
#1

Программирование сокетов - Программирование Android

20.11.2015, 19:03. Просмотров 272. Ответов 6
Метки нет (Все метки)

Извиняюсь за глупые вопросы. Не могу понять где я напортачил.
В общем месяц назад было интересно сделать сервер и клиент на java. Долго искал что и как реализовать. В итоге наткнулся на статью где всё разложено по полочкам. Вот ссылка.
Почитал. Вроде я понял как все работает, но когда решил переписать это же код на андроид возникла не понятная проблема. Не происходит вообще ничего. Сервер не реагирует на клиент и не вылетает ошибок..

Исходя из того, что я знаю. Мне казалось, что по нажатию на кнопку должен был создаться сокет, выходной и входной потоки, а потом на сервер должна отправиться строка. Но ничего не происходит.. Не знаю, это какая то мелкая ошибка и мне нужно заново всё переделать, или
я просто написал полную чушь и нужно тоже все переделывать.



Основной класс с клиентом

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
public class client_android {
 
    public static Socket socket;
    public static int serverPort;
    public static String line = null;
    public static String address;
 
 
 
 
    public void WorkOnServer(String Lines) throws IOException {
 
        InetAddress ip_adress = InetAddress.getByName(address);
        socket = new Socket(ip_adress, serverPort);
 
        InputStream incoming = socket.getInputStream();
        OutputStream outcoming = socket.getOutputStream();
 
        DataInputStream in = new DataInputStream(incoming);
        DataOutputStream out = new DataOutputStream(outcoming);
 
           
 
                line = Lines;
                out.writeUTF(line);
                out.flush();
                line = in.readUTF();
 
 
    }
}

А в этой функции я вызываю метод WorkOnServer из класса client_android.

Java
1
2
3
4
5
6
7
8
9
10
11
    public void PlayClientAndroid () throws IOException {
        client_android workserv = new client_android();
        String s = editText.getText().toString();
        client_android.address = "192.168.100.5";
 
        client_android.serverPort = 1337;
 
 
        workserv.WorkOnServer(s);
 
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2015, 19:03     Программирование сокетов
Посмотрите здесь:

Ошибка сокетов: D/AndroidRuntime: Shutting down VM - Программирование Android
Пишу сокет-клиент. Вроде всё делаю правильно... tvOut.setText("Коннектимся..."); Log.d("my", "Коннектимся..."); try { ...

Клиент-серверная архитектура на основе сокетов - Программирование Android
Есть такой код клиента под андроид. Сервер написан на си++. Подключаю ноут и телефон в одну сеть. Сервер работает точто правильно, но...

Есть ли книга где хорошо описывается создание сокетов? - Программирование Android
Открываю тему о TCP\UDP сокетах и всему что помогает связать андроид с внешним миром. Есть ли книга где хорошо описывается создание...

программирование на си++ - Программирование Android
есть исходный код (си++) программы под виндовс, написанный в шестой версии билдера (с графическим интерфейсом), нужно сделать аналогичную...

Программирование - Программирование Android
Посоветуйте какие нибудь книги или видео уроки по программированию для андроида. Вообще не знаю что да как, при помощи какого языка и т.д....

Программирование Android - Программирование Android
Привет форумчане! Решил заняться программированием под андроид(с 0), в связи с этим несколько вопросов: 1. С чего начинать(Java,xml, мб...

Программирование НА Android - Программирование Android
Привет.Всех с наступающим. Кто-нибудь пишет программы непосредственно на планшетниках? Поделитесь пожалуйста опытом.

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Pablito
2459 / 1904 / 591
Регистрация: 12.05.2014
Сообщений: 6,712
Завершенные тесты: 1
20.11.2015, 19:08     Программирование сокетов #2
все равно в консоль должно что-то писать - копируй все что туда навалит после выполнения кода
maybeTM
10 / 10 / 2
Регистрация: 30.10.2014
Сообщений: 145
20.11.2015, 19:24  [ТС]     Программирование сокетов #3
Вот то, что вывело после компиляции.

XML
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
11-20 16:15:34.492    1187-1187/? D/dalvikvm﹕ Late-enabling CheckJNI
11-20 16:15:34.636    1187-1187/? W/dalvikvm﹕ VFY: unable to find class referenced in signature (Landroid/view/SearchEvent;)
11-20 16:15:34.648    1187-1187/? I/dalvikvm﹕ Could not find method android.view.Window$Callback.onSearchRequested, referenced from method android.support.v7.internal.view.WindowCallbackWrapper.onSearchRequested
11-20 16:15:34.648    1187-1187/? W/dalvikvm﹕ VFY: unable to resolve interface method 14035: Landroid/view/Window$Callback;.onSearchRequested (Landroid/view/SearchEvent;)Z
11-20 16:15:34.652    1187-1187/? D/dalvikvm﹕ VFY: replacing opcode 0x72 at 0x0002
11-20 16:15:34.652    1187-1187/? I/dalvikvm﹕ Could not find method android.view.Window$Callback.onWindowStartingActionMode, referenced from method android.support.v7.internal.view.WindowCallbackWrapper.onWindowStartingActionMode
11-20 16:15:34.656    1187-1187/? W/dalvikvm﹕ VFY: unable to resolve interface method 14039: Landroid/view/Window$Callback;.onWindowStartingActionMode (Landroid/view/ActionMode$Callback;I)Landroid/view/ActionMode;
11-20 16:15:34.656    1187-1187/? D/dalvikvm﹕ VFY: replacing opcode 0x72 at 0x0002
11-20 16:15:34.864    1187-1187/? I/dalvikvm﹕ Could not find method android.content.res.TypedArray.getChangingConfigurations, referenced from method android.support.v7.internal.widget.TintTypedArray.getChangingConfigurations
11-20 16:15:34.864    1187-1187/? W/dalvikvm﹕ VFY: unable to resolve virtual method 401: Landroid/content/res/TypedArray;.getChangingConfigurations ()I
11-20 16:15:34.880    1187-1187/? D/dalvikvm﹕ VFY: replacing opcode 0x6e at 0x0002
11-20 16:15:34.884    1187-1187/ru.maybetm.onclick_button I/dalvikvm﹕ Could not find method android.content.res.TypedArray.getType, referenced from method android.support.v7.internal.widget.TintTypedArray.getType
11-20 16:15:34.884    1187-1187/ru.maybetm.onclick_button W/dalvikvm﹕ VFY: unable to resolve virtual method 423: Landroid/content/res/TypedArray;.getType (I)I
11-20 16:15:34.884    1187-1187/ru.maybetm.onclick_button D/dalvikvm﹕ VFY: replacing opcode 0x6e at 0x0002
11-20 16:15:34.928    1187-1187/ru.maybetm.onclick_button I/dalvikvm﹕ Could not find method android.content.res.Resources.getDrawable, referenced from method android.support.v7.internal.widget.ResourcesWrapper.getDrawable
11-20 16:15:34.936    1187-1187/ru.maybetm.onclick_button W/dalvikvm﹕ VFY: unable to resolve virtual method 364: Landroid/content/res/Resources;.getDrawable (ILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable;
11-20 16:15:34.936    1187-1187/ru.maybetm.onclick_button D/dalvikvm﹕ VFY: replacing opcode 0x6e at 0x0002
11-20 16:15:34.936    1187-1187/ru.maybetm.onclick_button I/dalvikvm﹕ Could not find method android.content.res.Resources.getDrawableForDensity, referenced from method android.support.v7.internal.widget.ResourcesWrapper.getDrawableForDensity
11-20 16:15:34.936    1187-1187/ru.maybetm.onclick_button W/dalvikvm﹕ VFY: unable to resolve virtual method 366: Landroid/content/res/Resources;.getDrawableForDensity (IILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable;
11-20 16:15:34.936    1187-1187/ru.maybetm.onclick_button D/dalvikvm﹕ VFY: replacing opcode 0x6e at 0x0002
11-20 16:15:35.064    1187-1187/ru.maybetm.onclick_button D/libEGL﹕ loaded /system/lib/egl/libEGL_genymotion.so
11-20 16:15:35.068    1187-1187/ru.maybetm.onclick_button D/﹕ HostConnection::get() New Host Connection established 0xb7fe8c28, tid 1187
11-20 16:15:35.100    1187-1187/ru.maybetm.onclick_button D/libEGL﹕ loaded /system/lib/egl/libGLESv1_CM_genymotion.so
11-20 16:15:35.100    1187-1187/ru.maybetm.onclick_button D/libEGL﹕ loaded /system/lib/egl/libGLESv2_genymotion.so
11-20 16:15:35.212    1187-1187/ru.maybetm.onclick_button W/EGL_genymotion﹕ eglSurfaceAttrib not implemented
11-20 16:15:35.220    1187-1187/ru.maybetm.onclick_button D/OpenGLRenderer﹕ Enabling debug mode 0
11-20 16:15:35.236    1187-1190/ru.maybetm.onclick_button D/dalvikvm﹕ GC_CONCURRENT freed 182K, 3% free 8766K/8976K, paused 4ms+1ms, total 9ms
А это после нажатия на кнопку.
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
11-20 16:19:31.012    1187-1187/ru.maybetm.onclick_button W/System.err﹕ java.net.SocketException: socket failed: EACCES (Permission denied)
11-20 16:19:31.012    1187-1187/ru.maybetm.onclick_button W/System.err﹕ at libcore.io.IoBridge.socket(IoBridge.java:583)
11-20 16:19:31.016    1187-1187/ru.maybetm.onclick_button W/System.err﹕ at java.net.PlainSocketImpl.create(PlainSocketImpl.java:201)
11-20 16:19:31.016    1187-1187/ru.maybetm.onclick_button W/System.err﹕ at java.net.Socket.startupSocket(Socket.java:559)
11-20 16:19:31.016    1187-1187/ru.maybetm.onclick_button W/System.err﹕ at java.net.Socket.<init>(Socket.java:225)
11-20 16:19:31.016    1187-1187/ru.maybetm.onclick_button W/System.err﹕ at ru.maybetm.onclick_button.client_android.WorkOnServer(client_android.java:39)
11-20 16:19:31.016    1187-1187/ru.maybetm.onclick_button W/System.err﹕ at ru.maybetm.onclick_button.MainActivity.PlayClientAndroid(MainActivity.java:27)
11-20 16:19:31.016    1187-1187/ru.maybetm.onclick_button W/System.err﹕ at ru.maybetm.onclick_button.MainActivity$1.onClick(MainActivity.java:58)
11-20 16:19:31.016    1187-1187/ru.maybetm.onclick_button W/System.err﹕ at android.view.View.performClick(View.java:4204)
11-20 16:19:31.016    1187-1187/ru.maybetm.onclick_button W/System.err﹕ at android.view.View$PerformClick.run(View.java:17355)
11-20 16:19:31.016    1187-1187/ru.maybetm.onclick_button W/System.err﹕ at android.os.Handler.handleCallback(Handler.java:725)
11-20 16:19:31.016    1187-1187/ru.maybetm.onclick_button W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:92)
11-20 16:19:31.016    1187-1187/ru.maybetm.onclick_button W/System.err﹕ at android.os.Looper.loop(Looper.java:137)
11-20 16:19:31.016    1187-1187/ru.maybetm.onclick_button W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:5041)
11-20 16:19:31.016    1187-1187/ru.maybetm.onclick_button W/System.err﹕ at java.lang.reflect.Method.invokeNative(Native Method)
11-20 16:19:31.016    1187-1187/ru.maybetm.onclick_button W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:511)
11-20 16:19:31.016    1187-1187/ru.maybetm.onclick_button W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
11-20 16:19:31.016    1187-1187/ru.maybetm.onclick_button W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
11-20 16:19:31.016    1187-1187/ru.maybetm.onclick_button W/System.err﹕ at dalvik.system.NativeStart.main(Native Method)
11-20 16:19:31.016    1187-1187/ru.maybetm.onclick_button W/System.err﹕ Caused by: libcore.io.ErrnoException: socket failed: EACCES (Permission denied)
11-20 16:19:31.016    1187-1187/ru.maybetm.onclick_button W/System.err﹕ at libcore.io.Posix.socket(Native Method)
11-20 16:19:31.020    1187-1187/ru.maybetm.onclick_button W/System.err﹕ at libcore.io.BlockGuardOs.socket(BlockGuardOs.java:181)
11-20 16:19:31.020    1187-1187/ru.maybetm.onclick_button W/System.err﹕ at libcore.io.IoBridge.socket(IoBridge.java:568)
11-20 16:19:31.020    1187-1187/ru.maybetm.onclick_button W/System.err﹕ ... 17 more
Добавлено через 1 минуту
Хм.. походу я очень во многом ошибся.
Pablito
2459 / 1904 / 591
Регистрация: 12.05.2014
Сообщений: 6,712
Завершенные тесты: 1
20.11.2015, 19:25     Программирование сокетов #4
ну, начнем - сначала надо добавить в манифест строчку
XML
1
<uses-permission android:name="android.permission.INTERNET"/>
потому что ошибка
Java
1
java.net.SocketException: socket failed: EACCES (Permission denied)
maybeTM
10 / 10 / 2
Регистрация: 30.10.2014
Сообщений: 145
20.11.2015, 21:06  [ТС]     Программирование сокетов #5
Добавил строку в манифесте

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
11-20 18:04:27.581    6631-6631/ru.maybetm.onclick_button E/AndroidRuntime﹕ FATAL EXCEPTION: main
    android.os.NetworkOnMainThreadException
            at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
            at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84)
            at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
            at libcore.io.IoBridge.connect(IoBridge.java:112)
            at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
            at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
            at java.net.Socket.startupSocket(Socket.java:566)
            at java.net.Socket.<init>(Socket.java:225)
            at ru.maybetm.onclick_button.client_android.WorkOnServer(client_android.java:39)
            at ru.maybetm.onclick_button.MainActivity.PlayClientAndroid(MainActivity.java:27)
            at ru.maybetm.onclick_button.MainActivity$1.onClick(MainActivity.java:58)
            at android.view.View.performClick(View.java:4204)
            at android.view.View$PerformClick.run(View.java:17355)
            at android.os.Handler.handleCallback(Handler.java:725)
            at android.os.Handler.dispatchMessage(Handler.java:92)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:5041)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
            at dalvik.system.NativeStart.main(Native Method)
Добавлено через 1 минуту
Файл манифеста
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="ru.maybetm.onclick_button" >
    <uses-permission android:name="android.permission.INTERNET"/>
 
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
 
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
YuraAAA
1567 / 1309 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
20.11.2015, 21:12     Программирование сокетов #6
maybeTM, выносите работу с сокетами в отдельный поток. Тема поднималась уже миллион раз
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2015, 21:22     Программирование сокетов
Еще ссылки по теме:

Программирование на андроид - Программирование Android
Как научиться программировать на андроид, сначала изучить Java или можно сразу приступить к изучению на андроиде к примеру на этом...

Программирование игр - Программирование Android
Здравствуйте! Подскажите пожалуйста, на каком языке программирования можно начать писать игры под Android?

Программирование сокетов - C Linux
Здравствуйте. Все мы знаем, что при использовании функций connect, accept, bind, мы должны преобразовывать указатель на структуру...

Программирование сокетов - Delphi
Всем привет. Ребят, подскажите пожалуйста, как можно лучше реализовать такой замысел? Есть клиент и сервер, связанные TSocket'ами, добился...

Использование сокетов, сетевое программирование. - C++
Здравствуйте. Нужно сделать програмку, которая будет передавать другому компьютеру две переменных. Тоесть на обоих компьютерах запущена эта...


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

Или воспользуйтесь поиском по форуму:
maybeTM
10 / 10 / 2
Регистрация: 30.10.2014
Сообщений: 145
20.11.2015, 21:22  [ТС]     Программирование сокетов #7
я просто думал, что код на андроид и на джаве не будет значительно отличаться. Ну, сейчас я понял в какую сторону копать, спасибо.
Yandex
Объявления
20.11.2015, 21:22     Программирование сокетов
Ответ Создать тему
Опции темы

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