Я новичок в Android и Java, поэтому прошу прощения, если мой вопрос
спрашивается в неподходящей группе или на форуме. Я сделал .Net
приложение для моей компании, и недавно они попросили меня перенести его на
Android, чтобы установить его на Samsung Galaxy Tabs.
Прежде всего, я использую Eclipse, JDK 6, целевую платформу Android 2.2
и эмулятор с плагином GalaxyTab. Моя операционная система Windows 7.
Это приложение отправляет и получает сообщения от определенного
Контроллер в сети с использованием UDP.
Короче говоря, мое приложение использует DatagramSocket, привязывает его к локальному
«InetSocketAddress», а затем запускает поток, который прослушивает
датаграммы, в то время как другой поток отправляет запросы контроллеру по
запрос пользователя. Вот фрагмент кода:
Здесь я назначаю локальный адрес и сокет:
try {
loc_addr = new InetSocketAddress(
Inet4Address.getByAddress(
new byte[]{(byte) 192,(byte) 168,1,(byte)240}), 0xBAC0);
//192.168.1.240 is the IP of my machine on the network
} catch (UnknownHostException e) {
.......
}
try {
soc = new DatagramSocket();
soc.setReuseAddress(true);
soc.setBroadcast(true);
soc.bind(loc_addr);
} catch (SocketException e) {
.......
}
Здесь я слушаю входящие дейтаграммы:
try{
buf = new byte[1024];
receive_pac = new DatagramPacket(buf, 1024);
soc.receive(receive_pac);
if (receive_pac.getData() != null){
.......
}
}
Здесь я отправляю данные:
try {
addr = (Inet4Address) Inet4Address.getByAddress (new byte[]
{(byte) 192,(byte) 168,1,(byte) 255}); //The message I am sending should be broadcasted
} catch (UnknownHostException e) {
......
}
sendPacket = new DatagramPacket(buf, buf.length, addr,
loc_addr.getPort());
try {
soc.send(sendPacket);
} catch (IOException e) {
......
}
Хорошо, когда я использую "soc.bind (...)", я получаю следующее исключение:
не может назначить запрошенный адрес
Затем я получаю отладочное сообщение (я не знаю, уместно ли оно):
DEBUG/SntpClient(58): request time failed: java.net.SocketException: Address family not supported by protocol
Приложение работает, я проверил через "WireShark", что когда я
попросить эмулятор отправить данные на контроллер,
контроллер отвечает обратно с ожидаемыми данными правильно. Тем не менее
сокет, в приложении, на эмуляторе ничего не получает и остается заблокированным на
звонок "Получить"!
Может ли кто-нибудь помочь мне выяснить, какую проблему или ошибку я совершил с получением части моего приложения!
Любая помощь очень ценится,