Здравствуйте!
Не нашел толковых ответов на эту тему.
На данный момент для взаимодействия с "железякой" используются сокеты. Я создаю сокет(DatagramSocket) на одном мне нужном порту(можно выбирать и случайный), все дальнейшие операции должны производиться именно с этого порта. Таймаут выставлен в 1 секунду. Во все остальные части(другие потоки) я передаю именно этот созданный экземпляр сокета.
Взаимодействую с ними следующими образами:
Проблема следующая: при введение пункта 3, приложение перестает работать, как-будто сокет постоянно занят. Пример кода(класс из вышеупомянутого пункта 3):
import android.os.Handler
import android.os.Message
import com.controller.labaratory.controller.App
import com.controller.labaratory.controller.models.Container
import java.net.*
/**
* Created by ivan on 03/08/17.
*/
class DataPacketThread(val handler: Handler,
val socket: DatagramSocket,
val addres: InetAddress):Thread() {
override fun run() {
super.run()
while (!socket.isClosed){
try{
//socket.soTimeout=0
var buffer:ByteArray = kotlin.ByteArray(1024)
val packet = DatagramPacket(buffer, buffer.size)
socket?.receive(packet)
val odin:Byte = -1
if (!(buffer[0] == odin)){
if(packet.data[0].toInt() == 4){
val responseByteArray:ByteArray = byteArrayOf(1,33,
packet.data[2],packet.data[3])
val packetResponseAnswer = DatagramPacket(responseByteArray,
responseByteArray.size, addres, 1026)
socket?.send(packetResponseAnswer)
handler?.sendMessage(
Message.obtain(
handler,
App.UdpClientHandler.DATA_PACKET_RECEIVE,
HandlerContainer(825, Container(
packet.length,
packet.data))))
}
}
} catch (e:SocketTimeoutException){
e.printStackTrace()
} catch (e:SocketException){
e.printStackTrace()
}
}
}
fun end(){
socket.close()
}
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
help me пожалуйста я очень долго мучаюсь помогите кто знает
Вопрос общего характера - как найти утечку памяти? Есть ли какие нибудь хорошие гайды? Можно на английскомБиблиотеку leack canary не советуйте,...
Пытаюсь сделать простенькую текстовую игру на андроидПри нажатии любой кнопки экран должен сменяться на новый activity (как я думал), где будет...