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

Socket - Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Android Помогите передвинуть ImageView http://www.cyberforum.ru/android-dev/thread394017.html
В main.xml есть ImageView. Вот он: <ImageView android:id="@+id/image" android:layout_width="wrap_content" android:layout_height="wrap_content" /> Возникла задача программно его двигать. Т.е. менять позицию по x и y. Начал гуглить. И черт, начиная от ScrollBy и ScrollTo, и заканчивая какими-то абсолютно извращенскими методами на 15-20 строк кода - все НЕ РАБОТАЕТ! Спецы! Возможно я...
Android Вывод уведомлений в главное окно приложения. (Многопоточность) Здраствуте. Если кто знает подскажите пожалуйста как в andoid выводить уведомления в главное окно программы (например в TextView). Смысл в том, что при наступлении некоторого события в потоке мгновенно выводилось сообщение об этом в главное окно программы а поток продолжал свое выполнение. В моей программе получается так, что программа сначала дожидается выполнения потока, а потом выводит... http://www.cyberforum.ru/android-dev/thread393411.html
КАЛЬУЛЯТОР Android
Здравствуйте, помогите пожалуйста с написанием калькулятора выполняющего простые операции (+,-,*,/,=), ибо сам языка не знаю, а могу только кнопки на форме расположить. Спасибо Добавлено через 5 часов 32 минуты Блин, стыдно так..... Добавлено через 25 секунд как так можно было тему назвать...
Android Завершение предыдущего активити (удаление из стека)
товарищи, подскажите способы завершения предыдущего активити в стеке, чтобы по нажатию клавиши "назад" из последующего я уже не возобновлял предыдущее?? вроде раньше использовал простой finish() перед startActivity(), теперь почему-то после перехода на новое предыдущее из стека не удаляется. возможно ли, что проблема кроется в том, что нужный код выполняется внутри метода onPostExecute класса...
Android Android OpenGL 1.1 http://www.cyberforum.ru/android-dev/thread387131.html
Пытаюсь вот так нарисовать треугольник,но ничего не получается.В чём дело.смотрел несколько примеров,вроде всё идентично. package plane.namespace; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.FloatBuffer; import java.util.Random; import javax.microedition.khronos.egl.EGLConfig; import javax.microedition.khronos.opengles.GL10;
Android IntelliJ IDEA не запускает мою программу Проблема в следующем: создаю примитивную программу, взятую с примера: package com.example; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class MyActivity extends Activity { /** Called when the activity is first created. */ подробнее

Показать сообщение отдельно
flatgad
geJI<|>eP
186 / 186 / 1
Регистрация: 22.07.2010
Сообщений: 733
05.07.2013, 10:25     Socket
Цитата Сообщение от evgenys Посмотреть сообщение
спасибо за ваш пример UDP всё работает, но возникло несколько глупых вопросов Android только начал учить

1. если экран потухнет или если апу запустить заново сокет для прослушивания заново не откроется так как занят порт, как закрыть сокет (убить объект server)? думается это должно происходить по событию activity в методе onDestroy() но как написать не понимаю

2. будет ли работать такая прога с сервером в интернете (в двух направлениях), я написал серверную часть на php и в локальной сети между адресами 192.168.1.1 и 192.168.1.3 всё круто работает, но в инет конектица она не захотела хотя хостер вроде разрешает сокеты, может нужен выделеный сервер но у меня его нет.

3. может есть у кого рабочий пример для сокетов по TCP?
1. Нужно в главной активити на событие Ondestroy сделать sock.close(); и соответственно завершить поток приема данных.

2. Будет почему нет. Но одно но у сервера должен быть статический ай-пи. Но для работы в интернете я бы посоветовал TCP. Смотря какие цели конечные.

3. По TCP работа такая же как и для UDP только использовать нужно Serversocket - для сервера и Socket для клиента.

Вот мои исходники над которыми сейчас работаю но это ява но на андроиде должно тоже работать :

класс сервера : (получаю набор байтов но их можно и в string перевести в зависимости что тебе надо)

Кликните здесь для просмотра всего текста

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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import java.io.*;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
 
public class IPAServer {
 
    private class ClientThread extends Thread {
 
        public ClientThread() {
        }
 
        @Override
        public void run() {
            try {
                mySocket = serverSocket.accept();
                while (!stop_server) {
                    InputStream is = mySocket.getInputStream();
                    int r = is.available();//тут у меня проблема так как для сокетов нельзя использовать available сейчас 
//борюсь как можно поправить. Моя проблема в том что я не знаю сколько байт принимаю от клиента. Если у тя свой ///протокол то можно все упростить если тебе интересно.
                    if (r != 0) {
                        MainFrame.StartIPACleint();
                        byte[] buf =new byte[r];
                        mySocket.getInputStream().read(buf);
                        IPAClient.SendByteToClient(buf);
                        MainFrame.SetTextLog("[S]IPA [" + String.valueOf(port)
                                + "] : " + bytesToHex(buf) + "\n");
                    }
                }
            } catch (IOException ex) {
                System.out.println(ex);
            }
        }
    }
    private int port;
    private ServerSocket serverSocket;
    private boolean stop_server = false;
    private ClientThread clientthread;
    private static Socket mySocket;
    final protected static char[] hexArray = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
 
    public IPAServer(int _port, String _ipadress) {
        try {
            this.port = _port;
            this.serverSocket = new ServerSocket(port, 0, InetAddress.getByName(_ipadress));
            clientthread = new ClientThread();
            clientthread.start();
        } catch (IOException ex) {
            System.out.println(ex);
        }
    }
 
    public void SendDataFromServer(String _data) {
        try {
            OutputStream os = mySocket.getOutputStream();
            os.write(_data.getBytes());
        } catch (Exception ex) {
            System.out.println(ex);
        }
    }
 
    public static void SendByteToServer(byte _buf[]) {
        OutputStream os;
        try {
            if (mySocket != null) {
                os = mySocket.getOutputStream();
                os.write(_buf);
            }
        } catch (Exception ex) {
            System.out.println(ex);
        }
    }
 
    public String bytesToHex(byte[] bytes) {
        char[] hexChars = new char[bytes.length * 2];
        int v;
        for (int j = 0; j < bytes.length; j++) {
            v = bytes[j] & 0xFF;
            hexChars[j * 2] = hexArray[v >>> 4];
            hexChars[j * 2 + 1] = hexArray[v & 0x0F];
        }
        return new String(hexChars);
    }
}


класс клиента:
Кликните здесь для просмотра всего текста

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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
import java.io.*;
import java.net.Socket;
 
public class IPAClient {
 
    private class DataListener extends Thread {
 
        public DataListener() {
        }
 
        public void run() {
            try {
                clSocket = new Socket(IPadress, port);
                while (!stoprun) {
                    InputStream is = clSocket.getInputStream();
                    int r = is.available();//Тут тоже available не канает. 
                    if (r > 0) {
                        byte[] buf = new byte[r];
                        clSocket.getInputStream().read(buf);
                        if (!OMLClient.getSock()) {
                            buf = ConvertByteBuffer(buf);
                        }
                        IPAServer.SendByteToServer(buf);
//Вывод сообщения в текстовое поле у андроида такого неу :) 
                        MainFrame.SetTextLog("[C]IPA [" + String.valueOf(port) + "] : " + bytesToHex(buf) + "\n");
                    }
                }
            } catch (Exception ex) {
                System.out.println(ex);
            }
        }
    }
    private int port;
    private String IPadress;
    private static Socket clSocket = null;
    private DataListener datalistener;
    public boolean stoprun = false;
    final protected static char[] hexArray = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
 
    public IPAClient(int _port, String _ipadress) {
        this.port = _port;
        this.IPadress = _ipadress;
        datalistener = new DataListener();
        datalistener.start();
    }
 
    public static boolean getSock() {
        if (clSocket != null) {
            return true;
        }
        return false;
    }
 
    public static void SendByteToClient(byte _buf[]) {
        OutputStream os;
        try {
            if (clSocket != null) {
                os = clSocket.getOutputStream();
                os.write(_buf);
            }
        } catch (Exception ex) {
            System.out.println(ex);
        }
    }
 
    public String bytesToHex(byte[] bytes) {
        char[] hexChars = new char[bytes.length * 2];
        int v;
        for (int j = 0; j < bytes.length; j++) {
            v = bytes[j] & 0xFF;
            hexChars[j * 2] = hexArray[v >>> 4];
            hexChars[j * 2 + 1] = hexArray[v & 0x0F];
        }
        return new String(hexChars);
    }
 
    private byte[] ConvertByteBuffer(byte[] buff) {
        for (int i = 0; i < buff.length; i++) {
            if ((buff[i] == (byte) 0x0B) && (buff[i + 1] == (byte) 0xBB)) {
                buff[i] = (byte) 0x0F;
                buff[i + 1] = (byte) 0xA3;
                break;
            }
        }
        return buff;
    }
 
    public void StopClient() {
        stoprun = false;
    }
}


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