|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--java.net.DatagramSocket | +--socks.Socks5DatagramSocket
Datagram socket to interract through the firewall.
Can be used same way as the normal DatagramSocket. One should
be carefull though with the datagram sizes used, as additional data
is present in both incomming and outgoing datagrams.
SOCKS5 protocol allows to send host address as either:
NOTE:
Unlike other SOCKS Sockets, it does not support proxy chaining,
and will throw an exception if proxy has a chain proxy attached. The
reason for that is not my laziness, but rather the restrictions of
the SOCKSv5 protocol. Basicaly SOCKSv5 proxy server, needs to know from
which host:port datagrams will be send for association, and returns address
to which datagrams should be send by the client, but it does not
inform client from which host:port it is going to send datagrams, in fact
there is even no guarantee they will be send at all and from the same address
each time.
Constructor Summary | |
Socks5DatagramSocket()
Construct Datagram socket for communication over SOCKS5 proxy server. |
|
Socks5DatagramSocket(int port)
Construct Datagram socket for communication over SOCKS5 proxy server. |
|
Socks5DatagramSocket(int port,
java.net.InetAddress ip)
Construct Datagram socket for communication over SOCKS5 proxy server. |
|
Socks5DatagramSocket(Proxy p,
int port,
java.net.InetAddress ip)
Constructs datagram socket for communication over specified proxy. |
Method Summary | |
void |
close()
Closes datagram socket, and proxy connection. |
java.net.InetAddress |
getLocalAddress()
Address assigned by the proxy, to which datagrams are send for relay. |
int |
getLocalPort()
Returns port assigned by the proxy, to which datagrams are relayed. |
boolean |
isProxyAlive(int timeout)
This method checks wether proxy still runs udp forwarding service for this socket. |
void |
receive(java.net.DatagramPacket dp)
Receives udp packet. |
void |
send(java.net.DatagramPacket dp)
Sends the Datagram either through the proxy or directly depending on current proxy settings and destination address. |
void |
send(java.net.DatagramPacket dp,
java.lang.String host)
This method allows to send datagram packets with address type DOMAINNAME. |
Methods inherited from class java.net.DatagramSocket |
connect,
disconnect,
getInetAddress,
getPort,
getReceiveBufferSize,
getSendBufferSize,
getSoTimeout,
setReceiveBufferSize,
setSendBufferSize,
setSoTimeout |
Methods inherited from class java.lang.Object |
equals,
getClass,
hashCode,
notify,
notifyAll,
toString,
wait,
wait,
wait |
Constructor Detail |
public Socks5DatagramSocket() throws SocksException, java.io.IOException
public Socks5DatagramSocket(int port) throws SocksException, java.io.IOException
public Socks5DatagramSocket(int port, java.net.InetAddress ip) throws SocksException, java.io.IOException
public Socks5DatagramSocket(Proxy p, int port, java.net.InetAddress ip) throws SocksException, java.io.IOException
Method Detail |
public void send(java.net.DatagramPacket dp) throws java.io.IOException
See documentation on java.net.DatagramSocket for full details on how to use this method.
dp
- Datagram to send.public void send(java.net.DatagramPacket dp, java.lang.String host) throws java.io.IOException
If proxy specified for that socket has an option resolveAddrLocally set to true host will be resolved, and the datagram will be send with address type IPV4, if resolve fails, UnknownHostException is thrown.
dp
- Datagram to send, it should contain valid port and datahost
- Host name to which datagram should be send.Socks5Proxy.resolveAddrLocally(boolean)
public void receive(java.net.DatagramPacket dp) throws java.io.IOException
dp
- Datagram in which all relevent information will be copied.public int getLocalPort()
public java.net.InetAddress getLocalAddress()
public void close()
public boolean isProxyAlive(int timeout)
This methods checks wether the primary connection to proxy server is active. If it is, chances are that proxy continues to forward datagrams being send from this socket. If it was closed, most likely datagrams are no longer being forwarded by the server.
Proxy might decide to stop forwarding datagrams, in which case it should close primary connection. This method allows to check, wether this have been done.
You can specify timeout for which we should be checking EOF condition on the primary connection. Timeout is in milliseconds. Specifying 0 as timeout implies infinity, in which case method will block, until connection to proxy is closed or an error happens, and then return false.
One possible scenario is to call isProxyactive(0) in separate thread, and once it returned notify other threads about this event.
timeout
- For how long this method should block, before returning.
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |