<?xml version="1.0" encoding="UTF-8"?>
<response>
  <status>success</status>
  <result>
    <project>
      <id>65573</id>
      <name>socksviahttp</name>
      <created_at>2008-12-18T16:25:57Z</created_at>
      <updated_at>2009-04-21T14:00:45Z</updated_at>
      <description>Socks via HTTP is a program converting SOCKS requests into HTTP requests and tunnelling them through HTTP proxies if needed.The SOCKS protocol allows programs to traverse firewalls on any port number and is used by many popular programs, like Napster, MSN Messenger, CRT(telnet client) and many others. 

Many companies restrict firewall traversals only to HTTP requests, disabling SOCKS proxy. 

Socks via HTTP  provides a miniature SOCKS server for the SOCKS client, performing its connection through an HTTP proxy to a remote server, which establishes the real connection. 

Socks via HTTP is 100% Java, and can run on any OS.   

I - How it works 

II - As the program is 100% Java, you can use any OS combinaison you want: Server part 2b on Linux, Client part 2a on Windows. Both Server part and client part on Linux. Both Server part and client part on Windows. Server part 2b on Windows, Client part 2a on Linux. III -  IV - Advanced description:1.The client part 

The client part of Socks via HTTP acts as a socks server. Your program (IRC, Telnet or whatever) connects to this socks server, thinking it is speaking with a real socks server. 
The socks via HTTP client communicates the socks via HTTP server using HTTP protocol. # The HTTP packets are zipped on the fly to speed up network transfer. 

 2 - Server part 

The server parts manages the real connections. As you know, HTTP is a disconnected protocol, ie you create a request, send it, and you got a response. 
There is no connection context (I suppose here that the proxy you have to bypass does not support keep alive). As a consequence, the context handling is the job of the Socks via HTTP server part. 
The server part manages a HashTable containing all the opened connections. Each connection has an unique id. This id is sended by the Socks via HTTP client part for each request.</description>
      <homepage_url>http://code.google.com/p/socksviahttp</homepage_url>
      <download_url></download_url>
      <url_name>socksviahttp</url_name>
      <user_count>0</user_count>
      <average_rating></average_rating>
      <rating_count>0</rating_count>
      <analysis_id>527446</analysis_id>
      <analysis>
        <id>527446</id>
        <project_id>65573</project_id>
        <updated_at>2009-11-25T19:09:27Z</updated_at>
        <logged_at>2009-11-25T19:09:21Z</logged_at>
        <min_month>2008-03-01T00:00:00Z</min_month>
        <max_month>2008-03-01T00:00:00Z</max_month>
        <twelve_month_contributor_count>0</twelve_month_contributor_count>
        <total_code_lines>7053</total_code_lines>
        <main_language_id>5</main_language_id>
        <main_language_name>Java</main_language_name>
      </analysis>
      <licenses>
        <license>
          <name>gpl</name>
          <nice_name>GNU General Public License 2.0</nice_name>
        </license>
      </licenses>
    </project>
  </result>
</response>
