Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> IP калькулятор, проблемы реализации у новичка 
:(
    Опции темы
Rauko
Дата 13.7.2015, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 22.6.2009

Репутация: нет
Всего: нет



в общем, захотела написать сама вот такую программу... задача - высчитывать по данному адресу и маске сеть, в который входит введенный адрес, начальный и конечный адреса этой сети, широковещательный адрес, класс сети и его классовую маску по умолчанию... ну это так, программа минимум.

начала писать программу, но как всегда  через...  с ошибками и кучей непонимания

пока имею следующий код
Код

import java.net.*;
import java.util.*;

public class IPcalc {
    public static void main (String[] args) {
        String currentHost = args[0];
        String currentMask = args[1];
        System.out.println("Your IP :  " + currentHost + "\nYour mask: " + currentMask);
        InetAddress addr = InetAddress.getByName(currentHost);
        byte[] bIP = addr.getAddress();
        InetAddress mask = InetAddress.getByName(currentMask);
        byte[] bMask = mask.getAddress();
        int [] net = new int[4];
        for(int i = 0; i <= 3; i++){
            int bufIP = bIP[i];
            int bufMask = bMask[i];
            int bufNet = bufIP ^ bufMask;
            net[i] = bufNet;
        }
        System.out.print("Net adress is: " + net[0] + "." + net[1] + "." + net[2] + "." + net[3]);
    }
}


перевод в двоичную систему пока вырезала, она на данный момент единственное, что точно работает как надо... хотя в изначальной задумке она и не требовалась.

из недовольств компилятора:
IPcalc.java:9: error: unreported exception UnknownHostException; must be caught or declared to be thrown
        InetAddress addr = InetAddress.getByName(currentHost);
                                                ^
IPcalc.java:11: error: unreported exception UnknownHostException; must be caught or declared to be thrown
        InetAddress mask = InetAddress.getByName(currentMask);
                                                ^
2 errors
1. что ему может тут не нравится? как лечить?
2. как проинвертировать маску для получения широковещательного адреса?
3. на сколько все написанное кривое? 

пока это все вопросы, которые есть, дальше будут уже по мере написания появляться
PM MAIL   Вверх
_zorn_
Дата 14.7.2015, 06:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1076
Регистрация: 21.8.2007

Репутация: нет
Всего: 12



Чтобы компилятор не ругался оберни в try/catch

Вместо ксора нужен AND
Код
int bufNet = bufIP & bufMask;


Я бы работал с интегерами, а не с байтами. Например так.
Код

import java.net.*;
import java.util.*;
public class IPcalc {

    private static int ipToInt(String ip)
    {
        int result = 0;
        try{
            byte[] addr = InetAddress.getByName(ip).getAddress();
            for (byte b: addr){
                result = result << 8 | (b & 0xFF);
            }
        }catch(Exception e){}
        return result;
    }
    private static String intToIp(int ip)
    {
        return (ip>>24 & 0xFF) + "." + (ip>>16 & 0xFF) + "." + (ip>>8 & 0xFF) + "." + (ip & 0xFF);
    }

    public static void main (String[] args) {
        String currentHost = args[0];
        String currentMask = args[1];
        System.out.println("Your IP :  " + currentHost + "\nYour mask: " + currentMask);
        int addr = ipToInt(currentHost);
        int mask = ipToInt(currentMask);
        int net = addr & mask;
        int broadcast = net | ~mask;
        System.out.println("Net address is: " + intToIp(net));
        System.out.println("Broadcast address is: " + intToIp(broadcast));
        System.out.println("First address is: " + intToIp(net + 1));
        System.out.println("Last address is: " + intToIp(broadcast - 1));
    }
}

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0399 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.