KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > SocksUDPEcho


1 import java.net.*;
2 import java.io.*;
3 import socks.*;
4
5 /** SOCKS aware UDP echo client.<br>
6     Reads input line by line and sends it to given on command line
7     host and port, using given proxy, then blocks until reply datagram
8     recieved, not really echo, single threaded client, I just used it
9     for testing before UDP actually worked.
10 */

11 public class SocksUDPEcho{
12
13    public static void usage(){
14       System.err.print(
15     "Usage: java SocksUDPEcho host port [socksHost socksPort]\n");
16    }
17
18    static final int defaultProxyPort = 1080; //Default Port
19
static final String JavaDoc defaultProxyHost = "www-proxy"; //Default proxy
20

21    public static void main(String JavaDoc args[]){
22       int port;
23       String JavaDoc host;
24       int proxyPort;
25       String JavaDoc proxyHost;
26       InetAddress ip;
27
28       if(args.length > 1 && args.length < 5){
29      try{
30
31          host = args[0];
32          port = Integer.parseInt(args[1]);
33
34          proxyPort =(args.length > 3)? Integer.parseInt(args[3])
35                                      : defaultProxyPort;
36
37          host = args[0];
38          ip = InetAddress.getByName(host);
39
40          proxyHost =(args.length > 2)? args[2]
41                                      : defaultProxyHost;
42
43          Proxy.setDefaultProxy(proxyHost,proxyPort);
44          Proxy p = Proxy.getDefaultProxy();
45          p.addDirect("lux");
46
47
48          DatagramSocket ds = new Socks5DatagramSocket();
49                                  
50
51          BufferedReader in = new BufferedReader(
52                  new InputStreamReader(System.in));
53              String JavaDoc s;
54
55              System.out.print("Enter line:");
56              s = in.readLine();
57
58          while(s != null){
59                 byte[] data = (s+"\r\n").getBytes();
60                 DatagramPacket dp = new DatagramPacket(data,0,data.length,
61                                         ip,port);
62                 System.out.println("Sending to: "+ip+":"+port);
63                 ds.send(dp);
64             dp = new DatagramPacket(new byte[1024],1024);
65
66             System.out.println("Trying to recieve on port:"+
67                                 ds.getLocalPort());
68             ds.receive(dp);
69             System.out.print("Recieved:\n"+
70                              "From:"+dp.getAddress()+":"+dp.getPort()+
71                              "\n\n"+
72                 new String JavaDoc(dp.getData(),dp.getOffset(),dp.getLength())+"\n"
73                 );
74                 System.out.print("Enter line:");
75                 s = in.readLine();
76
77          }
78          ds.close();
79          System.exit(1);
80
81      }catch(SocksException s_ex){
82        System.err.println("SocksException:"+s_ex);
83        s_ex.printStackTrace();
84        System.exit(1);
85      }catch(IOException io_ex){
86        io_ex.printStackTrace();
87        System.exit(1);
88      }catch(NumberFormatException JavaDoc num_ex){
89        usage();
90        num_ex.printStackTrace();
91        System.exit(1);
92      }
93
94       }else{
95     usage();
96       }
97    }
98 }
99
Popular Tags