Gnutella Forums  

Go Back   Gnutella Forums > Gnutella News and Gnutelliums Forums > General Gnutella Development Discussion
Register FAQ The Twelve Commandments Members List Calendar Arcade Find the Best VPN Today's Posts

General Gnutella Development Discussion For general discussion about Gnutella development.


 
 
LinkBack Thread Tools Display Modes
Prev Previous Post   Next Post Next
  #1 (permalink)  
Old May 19th, 2003
Novicius
 
Join Date: May 19th, 2003
Posts: 2
miracle is flying high
Question Developing a simple Gnutella Servent.. Help

I am trying to implement a simple gnutella servent (No PING and PONG messages. Just Query and Query Hit messages. A gnutella node reads a startup file to know it neighbors) and I have a few issues which I think developers in this forum will be able to address. I am a bit confused as to how TCP/IP connections are handled in gnutella servents.

I would explain my design below and would really appreciate if the anybody could comment on it and point out the bottlenecks, blunders if any, in it.

The servent in my design would contain two modules (say ) a client and a server. The client presents a command line interface to the user where new search requests may be entered. The server handles Query and QueryHit messages from other neighboring servents.

I am looking at multithreaded server where every new incoming connection at the server starts a new thread. An ansychronous design would be more preferable but could also get a bit complicated. So i decided to stick to multithreading..

Now lets take a scenario. Suppose a user enters a search. The client component would create as many sockets as there are neighbors and connect to the neighbors ( gnutella servers ) and send them query packets or requests.

Question: 1) Should the client close the connection immediately after sending the Query packets ???

What I am thinking is that the neighboring nodes(server component in the neighboring nodes) who receive the query packets would in turn connect to their neighbors and send them the query packets and close the connection. The node or nodes which have that file being searched ( i.e. a QUERY HIT) would then create a QUERYHIT packet and send it back to the upstream node from where the query packet arrived.

Is this approach right ????

my confusion here is this:
After sending the query packet or request the client component of the first node will close all the sockets connecting to its neighbors. The results ( QUERYHITS) will be handled by the server component of the first node.

How does the node confirm that it has received all the QUERY HITS possible. A server could receive a QUERYHIT for a QUERY which was sent a long time ago.

Any feedback or constructive criticism is welcome.

Thank you
Reply With Quote
 


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Directory, idea on developing gnutella, constructive criticism, please Onib General Gnutella Development Discussion 2 February 27th, 2003 04:56 PM
looking for a simple java servent feliz General Gnutella Development Discussion 3 February 14th, 2002 01:35 AM
client ID (=servent ID=servent GUID) barbapappa999 Gnotella (Windows) 0 February 8th, 2002 03:23 AM
developing a gnutella client!!! High Lander General Gnutella Development Discussion 1 November 22nd, 2001 12:41 PM


All times are GMT -7. The time now is 08:22 PM.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2025, vBulletin Solutions, Inc.
SEO by vBSEO 3.6.0 ©2011, Crawlability, Inc.

Copyright © 2020 Gnutella Forums.
All Rights Reserved.