comparison app/src/main/java/net/sourceforge/jsocks/ProxyMessage.java @ 438:d29cce60f393

migrate from Eclipse to Android Studio
author Carl Byington <carl@five-ten-sg.com>
date Thu, 03 Dec 2015 11:23:55 -0800
parents src/net/sourceforge/jsocks/ProxyMessage.java@205ee2873330
children
comparison
equal deleted inserted replaced
437:208b31032318 438:d29cce60f393
1 package net.sourceforge.jsocks;
2
3 import java.io.IOException;
4 import java.io.InputStream;
5 import java.io.OutputStream;
6 import java.io.DataInputStream;
7 import java.net.InetAddress;
8 import java.net.UnknownHostException;
9
10 /**
11 Abstract class which describes SOCKS4/5 response/request.
12 */
13 public abstract class ProxyMessage{
14 /** Host as an IP address */
15 public InetAddress ip=null;
16 /** SOCKS version, or version of the response for SOCKS4*/
17 public int version;
18 /** Port field of the request/response*/
19 public int port;
20 /** Request/response code as an int*/
21 public int command;
22 /** Host as string.*/
23 public String host=null;
24 /** User field for SOCKS4 request messages*/
25 public String user=null;
26
27 ProxyMessage(int command,InetAddress ip,int port){
28 this.command = command;
29 this.ip = ip;
30 this.port = port;
31 }
32
33 ProxyMessage(){
34 }
35
36
37 /**
38 Initialises Message from the stream. Reads server response from
39 given stream.
40 @param in Input stream to read response from.
41 @throws SocksException If server response code is not SOCKS_SUCCESS(0), or
42 if any error with protocol occurs.
43 @throws IOException If any error happens with I/O.
44 */
45 public abstract void read(InputStream in)
46 throws SocksException,
47 IOException;
48
49
50 /**
51 Initialises Message from the stream. Reads server response or client
52 request from given stream.
53
54 @param in Input stream to read response from.
55 @param clinetMode If true read server response, else read client request.
56 @throws SocksException If server response code is not SOCKS_SUCCESS(0) and
57 reading in client mode, or if any error with protocol occurs.
58 @throws IOException If any error happens with I/O.
59 */
60 public abstract void read(InputStream in,boolean client_mode)
61 throws SocksException,
62 IOException;
63
64
65 /**
66 Writes the message to the stream.
67 @param out Output stream to which message should be written.
68 */
69 public abstract void write(OutputStream out)throws SocksException,
70 IOException;
71
72 /**
73 Get the Address field of this message as InetAddress object.
74 @return Host address or null, if one can't be determined.
75 */
76 public InetAddress getInetAddress() throws UnknownHostException{
77 return ip;
78 }
79
80
81 /**
82 Get string representaion of this message.
83 @return string representation of this message.
84 */
85 public String toString(){
86 return
87 "Proxy Message:\n"+
88 "Version:"+ version+"\n"+
89 "Command:"+ command+"\n"+
90 "IP: "+ ip+"\n"+
91 "Port: "+ port+"\n"+
92 "User: "+ user+"\n" ;
93 }
94
95 //Package methods
96 //////////////////
97
98 static final String bytes2IPV4(byte[] addr,int offset){
99 String hostName = ""+(addr[offset] & 0xFF);
100 for(int i = offset+1;i<offset+4;++i)
101 hostName+="."+(addr[i] & 0xFF);
102 return hostName;
103 }
104
105 static final String bytes2IPV6(byte[] addr,int offset){
106 //Have no idea how they look like!
107 return null;
108 }
109
110 }