Java tutorial
/* * Copyright 2014 Napolov Dmitry * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.aotorrent.common.protocol.tracker; import com.google.common.primitives.Ints; import io.netty.buffer.ByteBuf; import org.aotorrent.common.protocol.ProtocolException; import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.UnknownHostException; import java.util.ArrayList; import java.util.List; /** * @author dmitry 17.08.14 15:26 */ public class UDPAnnounceReply { private final static int action = 1; private final int interval; private final List<InetSocketAddress> peers; private int transactionId; public UDPAnnounceReply(ByteBuf in) throws ProtocolException, UnknownHostException { int length = in.readableBytes(); int action = in.readInt(); if (action != UDPAnnounceReply.action || length < 20) { throw new ProtocolException("Invalid packet"); } transactionId = in.readInt(); interval = in.readInt(); in.readInt(); //leechers in.readInt(); //seeders final int peerCount = in.readableBytes() / 6; peers = new ArrayList<>(peerCount); for (int i = 0; i < peerCount; i++) { int ip = in.readInt(); int port = in.readUnsignedShort(); InetAddress inetAddress = InetAddress.getByAddress(Ints.toByteArray(ip)); peers.add(new InetSocketAddress(inetAddress, port)); } } public int getTransactionId() { return transactionId; } public int getInterval() { return interval; } public List<InetSocketAddress> getPeers() { return peers; } }