<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FNetwork_Protocol%2FProxy_Server</id>
		<title>Java/Network Protocol/Proxy Server - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FNetwork_Protocol%2FProxy_Server"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Network_Protocol/Proxy_Server&amp;action=history"/>
		<updated>2026-04-21T21:50:38Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/Network_Protocol/Proxy_Server&amp;diff=8937&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Network_Protocol/Proxy_Server&amp;diff=8937&amp;oldid=prev"/>
				<updated>2010-06-01T07:21:52Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 07:21, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/Network_Protocol/Proxy_Server&amp;diff=8936&amp;oldid=prev</id>
		<title> в 18:01, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Network_Protocol/Proxy_Server&amp;diff=8936&amp;oldid=prev"/>
				<updated>2010-05-31T18:01:48Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== A simple proxy server ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
import java.io.*;&lt;br /&gt;
import java.net.*;&lt;br /&gt;
public class SimpleProxyServer {&lt;br /&gt;
  public static void main(String[] args) throws IOException {&lt;br /&gt;
    try {&lt;br /&gt;
      String host = &amp;quot;your Proxy Server&amp;quot;;&lt;br /&gt;
      int remoteport = 100;&lt;br /&gt;
      int localport = 111;&lt;br /&gt;
      // Print a start-up message&lt;br /&gt;
      System.out.println(&amp;quot;Starting proxy for &amp;quot; + host + &amp;quot;:&amp;quot; + remoteport&lt;br /&gt;
          + &amp;quot; on port &amp;quot; + localport);&lt;br /&gt;
      // And start running the server&lt;br /&gt;
      runServer(host, remoteport, localport); // never returns&lt;br /&gt;
    } catch (Exception e) {&lt;br /&gt;
      System.err.println(e);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  /**&lt;br /&gt;
   * runs a single-threaded proxy server on&lt;br /&gt;
   * the specified local port. It never returns.&lt;br /&gt;
   */&lt;br /&gt;
  public static void runServer(String host, int remoteport, int localport)&lt;br /&gt;
      throws IOException {&lt;br /&gt;
    // Create a ServerSocket to listen for connections with&lt;br /&gt;
    ServerSocket ss = new ServerSocket(localport);&lt;br /&gt;
    final byte[] request = new byte[1024];&lt;br /&gt;
    byte[] reply = new byte[4096];&lt;br /&gt;
    while (true) {&lt;br /&gt;
      Socket client = null, server = null;&lt;br /&gt;
      try {&lt;br /&gt;
        // Wait for a connection on the local port&lt;br /&gt;
        client = ss.accept();&lt;br /&gt;
        final InputStream streamFromClient = client.getInputStream();&lt;br /&gt;
        final OutputStream streamToClient = client.getOutputStream();&lt;br /&gt;
        // Make a connection to the real server.&lt;br /&gt;
        // If we cannot connect to the server, send an error to the&lt;br /&gt;
        // client, disconnect, and continue waiting for connections.&lt;br /&gt;
        try {&lt;br /&gt;
          server = new Socket(host, remoteport);&lt;br /&gt;
        } catch (IOException e) {&lt;br /&gt;
          PrintWriter out = new PrintWriter(streamToClient);&lt;br /&gt;
          out.print(&amp;quot;Proxy server cannot connect to &amp;quot; + host + &amp;quot;:&amp;quot;&lt;br /&gt;
              + remoteport + &amp;quot;:\n&amp;quot; + e + &amp;quot;\n&amp;quot;);&lt;br /&gt;
          out.flush();&lt;br /&gt;
          client.close();&lt;br /&gt;
          continue;&lt;br /&gt;
        }&lt;br /&gt;
        // Get server streams.&lt;br /&gt;
        final InputStream streamFromServer = server.getInputStream();&lt;br /&gt;
        final OutputStream streamToServer = server.getOutputStream();&lt;br /&gt;
        // a thread to read the client&amp;quot;s requests and pass them&lt;br /&gt;
        // to the server. A separate thread for asynchronous.&lt;br /&gt;
        Thread t = new Thread() {&lt;br /&gt;
          public void run() {&lt;br /&gt;
            int bytesRead;&lt;br /&gt;
            try {&lt;br /&gt;
              while ((bytesRead = streamFromClient.read(request)) != -1) {&lt;br /&gt;
                streamToServer.write(request, 0, bytesRead);&lt;br /&gt;
                streamToServer.flush();&lt;br /&gt;
              }&lt;br /&gt;
            } catch (IOException e) {&lt;br /&gt;
            }&lt;br /&gt;
            // the client closed the connection to us, so close our&lt;br /&gt;
            // connection to the server.&lt;br /&gt;
            try {&lt;br /&gt;
              streamToServer.close();&lt;br /&gt;
            } catch (IOException e) {&lt;br /&gt;
            }&lt;br /&gt;
          }&lt;br /&gt;
        };&lt;br /&gt;
        // Start the client-to-server request thread running&lt;br /&gt;
        t.start();&lt;br /&gt;
        // Read the server&amp;quot;s responses&lt;br /&gt;
        // and pass them back to the client.&lt;br /&gt;
        int bytesRead;&lt;br /&gt;
        try {&lt;br /&gt;
          while ((bytesRead = streamFromServer.read(reply)) != -1) {&lt;br /&gt;
            streamToClient.write(reply, 0, bytesRead);&lt;br /&gt;
            streamToClient.flush();&lt;br /&gt;
          }&lt;br /&gt;
        } catch (IOException e) {&lt;br /&gt;
        }&lt;br /&gt;
        // The server closed its connection to us, so we close our&lt;br /&gt;
        // connection to our client.&lt;br /&gt;
        streamToClient.close();&lt;br /&gt;
      } catch (IOException e) {&lt;br /&gt;
        System.err.println(e);&lt;br /&gt;
      } finally {&lt;br /&gt;
        try {&lt;br /&gt;
          if (server != null)&lt;br /&gt;
            server.close();&lt;br /&gt;
          if (client != null)&lt;br /&gt;
            client.close();&lt;br /&gt;
        } catch (IOException e) {&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Install Proxy Selector ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import java.net.InetSocketAddress;&lt;br /&gt;
import java.net.Proxy;&lt;br /&gt;
import java.net.ProxySelector;&lt;br /&gt;
import java.net.SocketAddress;&lt;br /&gt;
import java.net.URI;&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
public class Utils {&lt;br /&gt;
  private static void installProxySelector(final String hostName, final int portNum) {&lt;br /&gt;
    ProxySelector.setDefault(new ProxySelector() {&lt;br /&gt;
      public List select(URI uri) {&lt;br /&gt;
        List list = new ArrayList();&lt;br /&gt;
        list.add(new Proxy(Proxy.Type.HTTP, new InetSocketAddress(hostName, portNum)));&lt;br /&gt;
        return list;&lt;br /&gt;
      }&lt;br /&gt;
      public void connectFailed(URI uri, SocketAddress sa, IOException ioe) {&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>