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

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

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

Не создается Socket - Android

28.04.2016, 16:54. Просмотров 347. Ответов 15
Метки нет (Все метки)

есть сервер на c#, но не получается законнектиться на него с приложения на Andriod
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
private static final String SERVER_IP = "127.0.0.1";
    private static final int SERVER_PORT = 31111;
 
    private Socket socket;
    private OutputStreamWriter osr;
    private BufferedWriter bw;
 
    public void run(){
        try {
            InetAddress serverAddress = InetAddress.getByName(SERVER_IP);
            System.out.println("serverAddress has been crated");
 
            socket = new Socket(serverAddress, SERVER_PORT);
            System.out.println("socket has been created");
 
            OutputStream socketOut = socket.getOutputStream();
            System.out.println("Output stream has been created");
 
            OutputStreamWriter osr = new OutputStreamWriter(socketOut);
            System.out.println("Output stream writer has been created");
 
            bw = new BufferedWriter( osr );
            System.out.println("BufferedWriter has been created");
        }
        catch (Exception ex){
            System.out.println(ex.getMessage());
        }
    }
к тому же exception в консоле пишет null
В чем может быть проблема?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Паблито
2012 / 1754 / 545
Регистрация: 12.05.2014
Сообщений: 6,208
Завершенные тесты: 1
28.04.2016, 16:56     Не создается Socket #2
разрешение в манифесте прописано?
все это стартует в отдельном потоке? пруф?
justjew
0 / 0 / 0
Регистрация: 27.10.2015
Сообщений: 45
28.04.2016, 18:35  [ТС]     Не создается Socket #3
как прописать разрешение в манифесте?
Паблито
2012 / 1754 / 545
Регистрация: 12.05.2014
Сообщений: 6,208
Завершенные тесты: 1
28.04.2016, 18:45     Не создается Socket #4
что бы долго не объяснять где в файле это писать - вот пример манифеста
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.mytestapplication">
 
   <uses-permission android:name="android.permission.INTERNET"/>
    
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
 
</manifest>
нужная строка
XML
1
   <uses-permission android:name="android.permission.INTERNET"/>
SergioO
93 / 182 / 63
Регистрация: 13.12.2015
Сообщений: 986
28.04.2016, 19:10     Не создается Socket #5
Цитата Сообщение от justjew Посмотреть сообщение
к тому же exception в консоле пишет null
если не ошибаюсь, то это означает что исключений не возникло причем, согласно документации (сам без году неделю занимаюсь Андройд), то лучше использовать:
SocketException - ошибка создания
IllegalArgumentException
IOException
и поробуйте все-таки строку, тк она скорее всего резольвится, те
private static final String SERVER_IP = "localhost";

Java
1
2
3
4
5
6
7
8
9
10
try {
создаем пустой сокет
} SocketException;
try {
socket.conntect(hostname, port);
} IllegalArgumentException;
try {
//пишем в сокет;
} IOException;
если я не путаю потоки
Паблито
2012 / 1754 / 545
Регистрация: 12.05.2014
Сообщений: 6,208
Завершенные тесты: 1
28.04.2016, 19:18     Не создается Socket #6
Цитата Сообщение от justjew Посмотреть сообщение
есть сервер на c#, но не получается законнектиться на него с приложения на Andriod
эээ стоп, сервер находится тоже на телефоне? если нет то адрес сервера никак не может быть 127.0.0.1 или localhost
SergioO
93 / 182 / 63
Регистрация: 13.12.2015
Сообщений: 986
28.04.2016, 19:22     Не создается Socket #7
Цитата Сообщение от Паблито Посмотреть сообщение
никак не может быть 127.0.0.1 или localhost
скорее всего пробует из эмулятора.
вопрос - в догонку: а из AS можно ведь "конектиться" к localhost?
justjew
0 / 0 / 0
Регистрация: 27.10.2015
Сообщений: 45
28.04.2016, 22:55  [ТС]     Не создается Socket #8
эээ стоп, сервер находится тоже на телефоне? если нет то адрес сервера никак не может быть 127.0.0.1 или localhost
сервер на этом же компьютере
приложение с эмулятора запускаю
а как тогда коннектиться?

Добавлено через 25 минут
попробовал на локальный ip (192.168.100.3)
все равно не работает
SergioO
93 / 182 / 63
Регистрация: 13.12.2015
Сообщений: 986
28.04.2016, 23:26     Не создается Socket #9
походу подсети разные
justjew
0 / 0 / 0
Регистрация: 27.10.2015
Сообщений: 45
29.04.2016, 00:02  [ТС]     Не создается Socket #10
Цитата Сообщение от SergioO Посмотреть сообщение
походу подсети разные
и что можно сделать?
SergioO
93 / 182 / 63
Регистрация: 13.12.2015
Сообщений: 986
29.04.2016, 18:08     Не создается Socket #11
надо чтобы адреса и подсети согласовывались.
какие сейчас адреса и подсети?
просто для linux (android) 127.0.0.1 - это он сам и есть )) он же типа не знает что его эмулируют.
надо чтобы сервер-сокет висел на 192.168.1.1 c маской 255.255.255.0 (допустим),
а андройд 192.168.1.2 255.255.255.0
чтобы они в одной подсети (192.168.1.* или другой) были

Добавлено через 17 часов 47 минут
justjew, как успехи? заработало?
justjew
0 / 0 / 0
Регистрация: 27.10.2015
Сообщений: 45
29.04.2016, 18:40  [ТС]     Не создается Socket #12
Приеду домой с работы, попробую. Ещё за одно сделаю с asyncTask, а то я просто заимплеметил от runnable
SergioO
93 / 182 / 63
Регистрация: 13.12.2015
Сообщений: 986
29.04.2016, 19:10     Не создается Socket #13
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
import java.net.InetSocketAddress;
import java.net.Socket;
import java.util.Scanner;
import java.io.*;
 
public class SocketClass {
    public static void main(String[] args) {
        try {
            Socket ClientSocket = new Socket();
            ClientSocket.connect(new InetSocketAddress("www.google.com", 80), 5000);
 
            if (ClientSocket.isConnected()){
                System.out.println("Connected...\n");
            }
 
            String query = "GET HTTP/1.1\n" +
                            "Accept-Charset: utf-8\n"+
                            "Accept: text/plain"+
                    "Host:[url]www.google.com[/url] 80\n" +
                    "\n";
 
 
            OutputStream outStream = ClientSocket.getOutputStream();
            outStream.write(query.getBytes());
 
 
            InputStream inStream = ClientSocket.getInputStream();
            Scanner in = new Scanner(inStream);
 
            while (in.hasNextLine()) {
                String line = in.nextLine();
                System.out.println(line);
            }
            ClientSocket.close();
            if (ClientSocket.isClosed()) {
                System.out.println("\nConnection closed");
            }
        }
        catch (Exception Excep) {
            System.out.println(Excep);
        }
 
    }
}
попробовал сокеты.
программка чуток кривенькая, но проверить клиента можно.
а у Вас С# что там на серверном сокете? IIS на 80 порту?
http или https?
justjew
0 / 0 / 0
Регистрация: 27.10.2015
Сообщений: 45
29.04.2016, 20:06  [ТС]     Не создается Socket #14
Цитата Сообщение от SergioO Посмотреть сообщение
а у Вас С# что там на серверном сокете? IIS на 80 порту?
http или https?
Сервер нагло сп....ил, выглядит он вот так
Кликните здесь для просмотра всего текста

C#
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
class Server
    {
        private byte[] buffer = new byte[1024];
        public List<SocketL> ClientSockets { get; set; }
        List<string> names = new List<string>();
        private Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
 
 
        public Server()
        {
            ClientSockets = new List<SocketL>();
            SetupServer();
        }
 
        private void SetupServer()
        {
            Console.WriteLine("Setting up server...");
            serverSocket.Bind(new IPEndPoint(IPAddress.Any, 31111));
            Console.WriteLine("Server socket has been bound");
            serverSocket.Listen(1);
            Console.WriteLine("Server started listening");
            serverSocket.BeginAccept(new AsyncCallback(AcceptCallback), null);
            Console.WriteLine("Server started accepting");
        }
 
        private void AcceptCallback(IAsyncResult ar)
        {
            Socket socket = serverSocket.EndAccept(ar);
            ClientSockets.Add(new SocketL(socket));
            names.Add(socket.RemoteEndPoint.ToString());
 
            socket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(RecieveCallback), null);
            serverSocket.BeginAccept(new AsyncCallback(AcceptCallback), null);
        }
 
        private void RecieveCallback(IAsyncResult ar)
        {
            Socket socket = (Socket)ar.AsyncState;
            if (socket.Connected)
            {
                int received;
                try
                {
                    received = socket.EndReceive(ar);
                }
                catch (Exception)
                {
                    for (int i = 0; i < ClientSockets.Count; i++)
                    {
                        if (ClientSockets[i].Socket.RemoteEndPoint.ToString().Equals(socket.RemoteEndPoint.ToString()))
                        {
                            ClientSockets.RemoveAt(i);
                            Console.WriteLine("Clients connected: {0}", ClientSockets.Count.ToString());
                        }
                    }
                    return;
                }
                if (received != 0)
                {
                    byte[] dataBuf = new byte[received];
                    Array.Copy(buffer, dataBuf, received);
                    string text = Encoding.ASCII.GetString(dataBuf);
                    Console.WriteLine("Text received: {0}", text);
                    
                    for (int i = 0; i < ClientSockets.Count; i++)
                    {
                        if (socket.RemoteEndPoint.ToString().Equals(ClientSockets[i].Socket.RemoteEndPoint.ToString()))
                        {
                            Console.WriteLine("\n" + ClientSockets[i].Name + ": " + text);
                        }
                    }
                }
                else
                {
                    for (int i = 0; i < ClientSockets.Count; i++)
                    {
                        if (ClientSockets[i].Socket.RemoteEndPoint.ToString().Equals(socket.RemoteEndPoint.ToString()))
                        {
                            ClientSockets.RemoveAt(i);
                            Console.WriteLine("Clients connected: {0}", ClientSockets.Count.ToString());
                        }
                    }
                }
            }
            socket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(RecieveCallback), socket);
        }
    }
C#
1
2
3
4
5
6
7
8
9
10
class SocketL
    {
        public Socket Socket { get; set; }
        public string Name { get; set; }
 
        public SocketL(Socket socket)
        {
            this.Socket = socket;
        }
    }
SergioO
93 / 182 / 63
Регистрация: 13.12.2015
Сообщений: 986
29.04.2016, 20:17     Не создается Socket #15
через телнет пробовали серверную часть тестить?
в командной строке набрать
telnet adres.domen port

Добавлено через 8 минут
желательно отключить фаер на всякий, для чистоты эксперимента
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.04.2016, 20:19     Не создается Socket
Еще ссылки по теме:

Socket Android Client and Java Socket Server Android
Почему не создается 2 активити Android
Не создается jsonObject из строки Android
Android Не создается автоматическая активити
Android Не создается DB SQLite

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

Или воспользуйтесь поиском по форуму:
justjew
0 / 0 / 0
Регистрация: 27.10.2015
Сообщений: 45
29.04.2016, 20:19  [ТС]     Не создается Socket #16
connected!
вот только новая проблема появилась
теперь сервер выбрасывает исключение
но это уже совсем другая история
буду сидеть разбираться
спасибо всем за помощь
Yandex
Объявления
29.04.2016, 20:19     Не создается Socket
Ответ Создать тему
Опции темы

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