ОК, так что в данный момент я пытаюсь создать игру для Android, у меня запущен поток, и это нормально.
Однако я не уверен, как определить размер входящего буфера и как его читать.
В настоящее время это мой код:
if(!thisPlayer.isHost)
{
byte[] incMsg = new byte[64];
try {
socket = new DatagramSocket(port);
//socket.setSoTimeout(10);
DatagramPacket packet = new DatagramPacket(incMsg, incMsg.length);
socket.receive(packet);
Log.d("Receiving Game Message", "Received"+incMsg.toString());
} catch (UnknownHostException err) {
Log.e("", "", err);
} catch (Exception err) {
Log.e("", "", err);
}
testString = incMsg.toString();
} else {
byte[] msg = "Game On".getBytes();
try {
String compIP = "192.168.1.102";
String ip;
if(thisPlayer.ipAddress.equals(compIP))
ip = "192.168.1.107";
else
ip = compIP;
InetAddress sendingIP = InetAddress.getByName(ip);
socket = new DatagramSocket(port);
DatagramPacket p = new DatagramPacket(msg, msg.length, sendingIP, 5130);
socket.send(p);
Log.d("Sending Game Message", "Sent");
socket.close();
} catch (UnknownHostException err) {
Log.e("", "", err);
} catch (Exception err) {
Log.e("", "", err);
}
}
socket.close();
Этот вид работ. Хост отправляет данные. Клиент получает данные (я закомментировал время ожидания, и поток продолжается, поэтому я знаю, что он получает данные).
Я конвертирую byte [] в строку и затем отображаю ее. Однако то, что отображается, это «[B @ 448xxxx», где xxxx - это серия повторяющихся цифр / букв.
К сожалению, я дошел до того, что расстроился и теперь затуманен мозгом и не могу думать о своей жизни, где я ошибся.
ТИА
p.s. Я даже попытался сделать получаемый байтовый массив того же размера, что и исходящий, но безуспешно: /