Gnutonic -- A Java-Based GDNP Servant
I'm in the process of writing a Java-based GDNP servant, or a program that will connect to the GDNP network once it's up.
That network is designed to be a replacement for Gnutella; its philosophy is that immense amounts of bandwidth can be saved by using UDP/IP for network talk, as there is no need to ensure packet arrival for simple network communications. Currently, the network does not function for end-users; there's no one on it yet. Hopefully, some day, it can gain popularity and users.
You can find my planning documents here.
My actual source code is up, too.
I'll try to keep this up-to-date, but no promises.
Change Log:
- 8/23/01: This page went up. Gnutonic currently reads configuration files, generates file IDs, reads in host lists, and handshakes properly. It is very close to being able to process Control Foos & Bars, collectively the Control Service.
- 8/27/01: Connection Manager developed. It now handles all inbound & outbound UDP packets.
- 8/28/01: Control & Info Services implemented between Gnutonic clients; still cannot get an Info Pong or Control Bar from nova.yi.org, the GDNP Test servant. Also, header-writing function devleoped.
- 8/29/01: Began adding support for the Index Service, which is documented here.
- 8/30/01: Fixed Service ID bytes, allowing me to get Control Bars & Info Pongs from nova.yi.org.
Put on a rudimentary front-end.
Released Gnutonic v0.1: Gzipped tarball (UNIX) | Windows Zipfile
- 9/4/01: Performed much cleanup, including properly naming & separating the config class, storing the BID in a file, and creating the cleanup class, which currently just closes the UDP socket, but will soon send DISCONNECT packets to all connected hosts on exit.
- 9/5/01: Ran into weird problem -- inbound data not being handled. Currently researching problem.
- 9/6/01: Added displays of all packets both as Strings created from the byte array in the data, and as byte-by-byte .toString() outputs, in an attempt to further diagnose the inbound data problem. Also restructured connectionManager.java to send inbound packets to another subroutine for processing after being grabbed, as per the suggestion of a poster on comp.lang.java.help.
If you wish to contact me regarding Gnutonic -- or anything else, for that matter -- e-mail me at alex@schnarff.com.
Oh yeah, in case you want to know about me, go here.