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

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

Войти
Регистрация
Восстановить пароль
 
Randen
34 / 34 / 8
Регистрация: 06.01.2014
Сообщений: 707
#1

Не подключается к серверу через Socket - Программирование Android

03.01.2017, 19:20. Просмотров 361. Ответов 4
Метки нет (Все метки)

Привет.
Подключаюсь к серверу так:
Java
1
2
3
4
5
6
7
8
9
        try {
            ShowMessage("try");
            //InetAddress ipAddress = InetAddress.getByName(HOST); // создаем объект который отображает вышеописанный IP-адрес.
            socket = new Socket("localhost", PORT);//Открыть соединение с сервером
            ShowMessage("connect");
        } catch (Exception e) {
            ShowMessage(e.getMessage());
            e.printStackTrace();
        }
После "ShowMessage("try");" переходит на блок catch, где выводится пустое сообщение... Никакой инфы...

К серверу подключаюсь через C# нормально. Проблема именно в этом коде. Не в сервере, не в закрытых портах или ip адресе.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.01.2017, 19:20
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Не подключается к серверу через Socket (Программирование Android):

Не подключается к серверу MySQL - Программирование Android
Здравствуйте. Много тем перечитал, даже нашёл работающий исходник. Проблема только в том, что у меня почему-то не подключается к Mysql. ...

Передать файл через socket или через ftp api - Программирование Android
Посоветуйте как поступить: Есть файл на устройстве его нужно загрузить на сервер. 1 Загружать через socket, создав на сервере...

Сеть через Socket - Программирование Android
Есть программа (клиент), которая должна подключить к серверу, а он передаст ip других серверов и вообщем нужно иметь несколько подключений...

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

Удалить не полностью переданый файл через socket - Программирование Android
Допустим вовремя загрузки файла упало соединение и файл закачался не полностью. Как отследить что файл передался не полностью? Код...

Удаленное подключение к серверу через http - Программирование Android
Не как не могу найти информацию о том, как сделать что бы приложение обращалась к серверу по заданному http адресу и что бы все данные...

4
Pablito
2631 / 2113 / 656
Регистрация: 12.05.2014
Сообщений: 7,398
Завершенные тесты: 1
03.01.2017, 19:25 #2
в логах должен быть стектрейс ошибки
1
Randen
34 / 34 / 8
Регистрация: 06.01.2014
Сообщений: 707
03.01.2017, 19:29  [ТС] #3
Паблито, нереально на телефоне прочитать логи. Я пытался. Окрываю CatLog, и как только я запускаю свое приложение, то CatLog сразу зависает.

Есть другой способ узнать ошибку? Почему Exception выдаем мне пустоту? Для чего тогда вообще это надо делать так
Java
1
catch (Exception e)
,
а не так:
Java
1
catch ()
0
Pablito
2631 / 2113 / 656
Регистрация: 12.05.2014
Сообщений: 7,398
Завершенные тесты: 1
03.01.2017, 19:32 #4
если это андроид то
1. все сетевые запросы надо делать из отдельного потока
нельзя лезть в инет из UI потока
2. разрешение на INTERNET в манифесте есть?
3. телефон спокойно подключается по USB к компу и в студии смотрятся логи
4. "localhost" там явно не к месту, если подключение с телефона на какой-то сервер, там надо указывать IP сервера
1
Randen
34 / 34 / 8
Регистрация: 06.01.2014
Сообщений: 707
03.01.2017, 23:36  [ТС] #5
Паблито,
1. пишу плагин для Unity3d. Поэтому у меня плагин и есть отдельный поток. В плагине только общение с сервером и android service
2.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.qwe.threadService"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="19"
android:targetSdkVersion="19" />
<application
android:allowBackup="true"
android:icon="@drawable/app_icon"
android:label="@string/app_name" >

<activity android:name="com.qwe.threadService.ThreadService"
android:launchMode="singleTask"
android:label="@string/app_name">

<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

<service
android:enabled="true"
android:name="com.qwe.threadService.PlayService">
</service>
</application>

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<permission android:name="com.tmoney.vending.INBILLING"/>

</manifest>
3. Unity3d опять же, а не android.
4. Это не имеет значения. Был внешний ip. Просто тестил по разному.

Прочитал всё-таки лог. Только вот он ничего не сказал про подключение.
build.board: unknown
build.bootloader: unknown
build.brand: Android
build.cpu_abi: armeabi-v7a
build.cpu_abi2: armeabi
build.device: A117
build.display: cm_stairway-userdebug 4.4.4 KTU84Q 991fb91054 test-keys
build.fingerprint: Android/cm_stairway/stairway:4.4.4/KTU84Q/991fb91054:userdebug/test-keys
build.hardware: mt6589
build.host: c3po
build.id: KTU84Q
build.manufacturer: Micromax A117
build.model: Micromax A117
build.product: Micromax A117
build.radio: unknown
build.serial: unknown
build.tags: test-keys
build.time: 1412409614000
build.type: userdebug
build.user: chris
version.codename: REL
version.incremental: 991fb91054
version.release: 4.4.4
version.sdk_int: 19

01-03 19:31:28.727 E/auditd (4958): Failed on audit_set_pid with error: Protocol not supported
01-03 19:31:30.030 E/hwcomposer_v1.0(134): [WKR] Timed out waiting for FrameSyncThread...
01-03 19:31:30.784 E/ (137): AudioCloseDumpPCMFile file== NULL
01-03 19:31:30.784 E/ (137): AudioCloseDumpPCMFile file== NULL
01-03 19:31:31.036 E/hwcomposer_v1.0(134): [WKR] Timed out waiting for FrameSyncThread...
01-03 19:31:32.967 E/stp_dump(142): table == NULL || table->table == NULL
01-03 19:31:32.967 E/stp_dump(142): table == NULL || table->table == NULL
01-03 19:31:33.088 E/hwcomposer_v1.0(134): [WKR] Timed out waiting for UIComposeThread...
01-03 19:31:33.112 E/hwcomposer_v1.0(134): [WKR] Timed out waiting for UIComposeThread...
01-03 19:31:33.279 E/auditd (4983): Failed on audit_set_pid with error: Protocol not supported
01-03 19:31:33.285 E/mnl_linux(4981): mnl_utl_load_property: Config is not set yet, ignore
01-03 19:31:33.285 E/mnl_linux(4981): linux_gps_load_property: enable_dbg_log: 1
01-03 19:31:33.285 E/mnl_linux(4981): main: argv[1]= 13
01-03 19:31:33.285 E/mnl_linux(4981): main: Before main policy = 0, priority = 0
01-03 19:31:33.285 E/mnl_linux(4981): main: pthread_setschedparam FAIL
01-03 19:31:33.691 E/mnl_linux(4981): mtk_gps_sys_agps_disaptcher_callback: send message fail:No such file or directory
01-03 19:31:33.718 E/stp_dump(142): table == NULL || table->table == NULL
01-03 19:31:33.718 E/stp_dump(142): table == NULL || table->table == NULL
01-03 19:31:34.782 E/Unity (4859): Unable to find AudioPluginOculusSpatializer
01-03 19:31:34.844 E/Unity (4859): [EGL] eglChooseConfig(m_EGLDisplay, configAttribs, NULL, 0, &eglConfigCount): EGL_BAD_ATTRIBUTE: An unrecognized attribute or attribute value was passed in the attribute list.
01-03 19:31:34.844 E/Unity (4859):
01-03 19:31:34.844 E/Unity (4859): (Filename: ./Runtime/GfxDevice/egl/ConfigEGL.cpp Line: 369)
01-03 19:31:34.844 E/Unity (4859):
01-03 19:31:34.845 E/Unity (4859): [EGL] eglChooseConfig(m_EGLDisplay, configAttribs, NULL, 0, &eglConfigCount): EGL_BAD_ATTRIBUTE: An unrecognized attribute or attribute value was passed in the attribute list.
01-03 19:31:34.845 E/Unity (4859):
01-03 19:31:34.845 E/Unity (4859): (Filename: ./Runtime/GfxDevice/egl/ConfigEGL.cpp Line: 369)
01-03 19:31:34.845 E/Unity (4859):
01-03 19:31:34.913 E/cutils (124): Failed to mkdirat(/storage/sdcard1/Android): Read-only file system
01-03 19:31:36.179 E/libEGL (4859): call to OpenGL ES API with no current context (logged once per thread)
01-03 19:31:36.515 E/Unity (4859): —----— GLSL link failed, no info log provided.
01-03 19:31:36.515 E/Unity (4859):
01-03 19:31:36.515 E/Unity (4859): (Filename: Line: 749)
01-03 19:31:36.515 E/Unity (4859):
01-03 19:31:36.516 E/Unity (4859): —----— GLSL link failed, no info log provided.
01-03 19:31:36.516 E/Unity (4859):
01-03 19:31:36.516 E/Unity (4859): (Filename: Line: 749)
01-03 19:31:36.516 E/Unity (4859):
01-03 19:31:36.516 E/Unity (4859): —----— GLSL link failed, no info log provided.
01-03 19:31:36.516 E/Unity (4859):
01-03 19:31:36.516 E/Unity (4859): (Filename: Line: 749)
01-03 19:31:36.516 E/Unity (4859):
01-03 19:31:36.520 E/Unity (4859): —----— GLSL link failed, no info log provided.
01-03 19:31:36.520 E/Unity (4859):
01-03 19:31:36.520 E/Unity (4859): (Filename: Line: 749)
01-03 19:3
Добавлено через 3 часа 44 минуты
Вот нашел в логах исключение
java.net.ConnectException: failed to connect to /127.0.0.1 (port 44343): connect failed: ECONNREFUSED (Connection refused)
И как её решать?

Добавлено через 10 минут
Паблито, localhost и правда был лишним. Просто привык на компе тестить)
Проблему решил, правда не знаю как.
Может созданием такого класса:
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
package com.qwe.threadService;
 
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import java.nio.charset.Charset;
 
import com.google.gson.Gson;
 
import android.app.Activity;
import android.os.Bundle;
 
public class Client extends Activity {
    public static String HOST = "lol2.ddns.net";
    public static int PORT = 44343;
    Socket socket = null;
    Gson gson;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {//Инициализация
        ThreadService.TCP.ShowMessage("Client.onCreate");
        super.onCreate(savedInstanceState);
        
        new Thread(new ClientThread()).start();
    }
    
    public Client() {
        ThreadService.TCP.ShowMessage("Client.onCreate///");
        new Thread(new ClientThread()).start();
    }
    
    class ClientThread implements Runnable {
        @Override
        public void run() {
 
            try {
                InetAddress serverAddr = InetAddress.getByName(HOST);
                socket = new Socket(serverAddr, PORT);
 
                
                OutputStream out = socket.getOutputStream();
                byte[] buf = "{"type":"auth","login":"admin","pwd":"admin9"}".getBytes(Charset.forName("UTF-8"));
                out.write(buf);
            } catch (UnknownHostException e1) {
                e1.printStackTrace();
            } catch (IOException e1) {
                e1.printStackTrace();
            }
        }
    }
}
Добавлено через 4 минуты
Паблито, подскажите в чем предназначение события onCreate?
Некоторые вещи не работают в конструкторе класса, а выполняются в onCreate. Что за классификация вещей?)
Но почему-то этот метод сам по себе не всегда выполняется.
Я читал что оно выполняется 1 раз при запуске приложения. Потом каждый запуск выполняется
Java
1
public int onStartCommand(Intent intent, int flags, int startId) {//Инициирующее событие
Но ведь это событие только для сервисов.

Всего неделю в Java. Не хочется тонны книг читать, просто необходимости нет.
Но был бы вам благодарен, если бы рассказали тут про это вкрадце)
0
03.01.2017, 23:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.01.2017, 23:36
Привет! Вот еще темы с ответами:

Socket Android Client and Java Socket Server - Программирование Android
Доброго времени суток.Пытаюсь сделать простое клиент-серверное приложение. Клиент - приложение на Android устройстве. Сервер - Приложение...

Не подключается через Socket - C# WCF
Здравствуйте, пишу приложение, использующее соединение через сокеты. Вот код сервера: IPHostEntry ipHost =...

Подключение к серверу через socket - Java Сети
Сделал рабочие клиент и сервер, на локалхост на моем компе клиент подключается, все отлично работает. Решил попробовать соединиться с...

Несколько клиентов к одному серверу через Socket - Java
У меня не получается подключить больше одного клиента к одному серверу. Для тестирования использую корпоративную сеть. Хочу просто...


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

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

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