⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 candidate.java

📁 也是stun的一种java实现
💻 JAVA
字号:
/* * This file is part of JSTUN.  *  * Copyright (c) 2005 Thomas King <king@t-king.de> - All rights * reserved. *  * This software is licensed under either the GNU Public License (GPL), * or the Apache 2.0 license. Copies of both license agreements are * included in this distribution. */package de.javawi.jstun.test.demo.ice;import java.net.DatagramSocket;import java.net.SocketException;import java.net.UnknownHostException;import de.javawi.jstun.util.Address;import de.javawi.jstun.util.UtilityException;public class Candidate implements Comparable {	// The ieft-mmusic-ice-12 draft is not non-ambigious about the number of types.	// Chapter 5.1 defines 3 and 4 types on page 16 and page 17, respectively. 	public enum CandidateType { Local, ServerReflexive, PeerReflexive, Relayed };		private DatagramSocket socket;	private CandidateType type;	private short componentId;	private int priority;	private int foundationId;	private Candidate base;	private boolean isInUse;		public Candidate(Address address, short componentId) throws SocketException, UnknownHostException, UtilityException {		this.socket = new DatagramSocket(0, address.getInetAddress());		this.type = CandidateType.Local;		this.componentId = componentId;		this.priority = 0;		this.base = this;		this.isInUse = false;	}		public Candidate(Address address, CandidateType type, short componentId, Candidate base) throws SocketException, UnknownHostException, UtilityException {		this.socket = new DatagramSocket(0, address.getInetAddress());		this.type = type;		setComponentId(componentId);		this.priority = 0;		this.base = base;		this.isInUse = false;	}	public void setBase(Candidate base) {		this.base = base;	}		public Candidate getBase() {		return base;	}		public CandidateType getCandidateType() {		return type;	}		public void setComponentId(short componentId) {		if ((componentId < 1) || (componentId > 256)) throw new IllegalArgumentException(componentId + " is not between 1 and 256 inclusive.");		this.componentId = componentId;	}		public short getComponentId() {		return componentId;	}		public void setFoundationId(int foundationId) {		this.foundationId = foundationId;	}		public int getFoundationId() {		return foundationId;	}		public void setPriority(int priority) {		this.priority = priority;	}		public int getPriority() {		return priority;	}		public Address getAddress() throws UtilityException {		return new Address(socket.getLocalAddress().getAddress());	}	public int getPort() {		return socket.getLocalPort();	}		public void setInUse(boolean isInUse) {		this.isInUse = isInUse;	}		public boolean getInUse() {		return isInUse;	}		public int compareTo(Object arg0) {		Candidate cand = (Candidate) arg0;		return cand.getPriority() - getPriority();	}		public boolean equals(Object o) {		if (o == null) return false;		if ((((Candidate) o).socket.equals(socket)) && (((Candidate) o).base.equals(base))) return true;		return false;	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -