Функция htons преобразует узловой порядок расположения байтов в сетевой порядок расположения байтов. В short помещаются все возможные порты от 0 до 65535 (фактически от -32768 до 32767, т.к. в Java знаковый short):
static short htons(short val) {
return (short) ((val & 0xff) << 8
| (val & 0xff00) >>> 8); // >>> - беззнаковый сдвиг
}
Функция htonl() преобразует узловой порядок расположения байтов в сетевой порядок расположения байтов. В int помещаются все возможные адреса IPv4 от 0.0.0.0 до 255.255.255.255 (фактически от -2 147 483 648 до 2 147 483 647, т.к. в Java знаковый int):
static int htonl(int val) {
return (val & 0xff) << 24
| (val & 0xff00) << 8
| (val & 0xff0000) >> 8
| (val & 0xff000000) >>> 24; // >>> - беззнаковый сдвиг
}