Gnutella Forums

Gnutella Forums (https://www.gnutellaforums.com/)
-   General Gnutella Development Discussion (https://www.gnutellaforums.com/general-gnutella-development-discussion/)
-   -   VB Gnutella client (https://www.gnutellaforums.com/general-gnutella-development-discussion/12337-vb-gnutella-client.html)

Gamer June 12th, 2002 05:25 AM

VB Gnutella client
 
I'm considering making my own gnutella client in VB in the near future, but do have some questions concerning it:

Anybody know if there is a physical reason this cant or shouldnt be done, IE: Very high cpu or mem usage?

Will the winsock control VB uses have any issues?

Thanks =)

cultiv8r June 12th, 2002 09:29 AM

Actually, have a look at http://www.gnutelladev.com. There's a section of published Gnutella code, and you can find some VB versions around there. Could either continue building on top of it, or use it as an example.

I'm not a VB programmer though, but I know that VB is quite well capable for writing a Gnutella client. The now defunct GnOtella client was written in VB.

tshdos June 12th, 2002 11:27 AM

Some minor problems with VB Apps:

Lack of multi-threading:
Causes problems if you get into a long process that doesn't give
up processor time to update the UI (DoEvents). In an app such
as this it would be more of a problem than usual. If you carefully
create your functions it can be overcome easily.

Dependency Files:
Large runtime files that have to be distributed with your App.
Can't really get around this unless you make to distributions of
your app, one with the runtimes and one without.

API Calls:
Depending on the function some API calls can block not allowing
your client to update the UI. This can be avoided by simple
testing.

Winsock Control:
Simple to use and no REAL issues with this type of app. You
could look for a better one. Gnotella used a different winsock
control (library) but I can't remember the name but it might have
been a custom control.

There is no reason you can't make a client using VB. The
limitations I mentioned above all have some type of workaround
(except maybe the dependencies). The examples on gnutelladev
(at least the last time I looked) are quite old but could be used as
a generic example.

You could write it in VB.NET but then your dependency files would
become even larger (Look at Swapper), but all of the problems
above disappear. If you know C++ that would be of much help
because you could write a library or control to handle alot of the
things VB is not so great with.

Even though many people claim that VB sucks it is damn good at
making programs. There are still people who claim Gnotella is the
best client ever written, just visit the Gnotella forum.

Gamer June 13th, 2002 12:57 AM

Thanks for the replies =)

VB6 sp5 runtime is 1mb, that isn't so bad and will be what I use most likely. Unfortunately I know very little C++ and wont be able to make too many custom controls for myself, but the ones vb already has and possibly a few already established ones would do.

As I side note, I liked Gnotella a lot back in its early beta days right when napster had its downfall [compared to limewire and bearshare] =)

Hopefully I can get it to all work out!

cultiv8r June 13th, 2002 09:25 AM

Based on tshdos' comments, you'd definitely want to look into event driven actions and asynchronous sockets. Didn't know VB had a poor support for multi-threading. But I guess that you can use the WinAPI to make your own thread wrapper, check MSDN library how to use the thread calls.

Gamer June 13th, 2002 09:43 AM

I found an active x control somebody else made that is great for this type of use =)

TorK June 16th, 2002 07:37 AM

One of the biggest problems, i think, is that VB is not very godo at binary stuff. Bitmasks, endianness, hashtables, etc. get very tricky. Even simple things like reading nul-terminated strings requires quite a lot of code.

There have been Gnutella projects in VB, but as far as I know none of them have bee nupdated for a long time. The Gnutella protocol has been developed a lot since then.

Gamer June 16th, 2002 08:40 AM

yea... I've found a somewhat working one under the gpl but its based off 0.4 specs..

Unregistered June 16th, 2002 11:19 PM

Quote:

Originally posted by Gamer
Unfortunately I know very little C++ and wont be able to make too many custom controls for myself, but the ones vb already has and possibly a few already established ones would do.
Would only take a day or two, it's same/same mostly.
Why did the public fool system make us all think it's so darn hard to learn something new?
I am telling you it's not that hard, go get book programming C in 24 hrs or something like that.
Then you can just take the gnucleus code and start on something that is already working instead of re-inventing the wheel.

Gamer June 18th, 2002 09:49 AM

c++ and vb are entirely different, I'm guessing your the same person making ignorant and rude remarks all over this forum. I know some c++ but dont have the time to learn more about it, nor would I need to buy a book when I have 800mb of help files.

fireforce June 18th, 2002 04:45 PM

I too am interested in doing the same thing. I have also found many probs with it. From what I see, I dont think VB is fast enough to do all the work needed without putting a huge drain on the system. The only way I can see is to write a DLL that does alll the hard work, but that would require C or C++. You and me are in the same boat. Right now I am pushing my VB6 and database training to get a job and dont have the time right now to learn a new language.


As for the two VB gnutella projects I found, neither work. Vbgnutella is garbage. And Coyotella although it will run, wont connect. I got one connection one time and lost it a second later. Never got it back.


VB itself just doesnt seem powerful enough for this kinda work. Al least not by itself. To make a VB friendly environement someone would have to write a VBGnu control that would plug right in to a VB app just like you plug the winsock control into one.


VBs threngths seem to be in databases, office and/or corporate apps. But from what I hear about VB.Net that may be changing.

Unregistered June 19th, 2002 04:22 PM

You don't have time but yet you want to program a gnutella client from scratch?
And then you waste your time because no one would want a slow, unusable client that is written in BASIC.
So why not start with a advanced already written client and just add the few things you want to do that are special to you?
If you spend the time you would have wasted writing things from scratch and learn a little C, then you will be worth more in the "marketplace" because you can develop REAL products that are professional and usable in a business, instead of stuff for play.
What I really don't understand is why you think it will take so much time to learn C. You haven't even tried but yet you think it will take away from your TV or party time, that would be sad indeed.

Gnutellian June 20th, 2002 03:33 AM

1 Attachment(s)
Quote:

Originally posted by Unregistered
And then you waste your time because no one would want a slow, unusable client that is written in BASIC.
What a hater! You sir, obviously do not know much about VB.

The image you see below is a PURE VB client written by me. No C++ 'helper' dll's, PURE VB. If you know what you are doing, there is NOTHING that you cannot accomplish in VB. I could have written this in MSVC++6 (I own visual studio 6 enterprise edition.), But I felt like a challenge. I bet you don't even know C/C++.

It can be done, and it's not that difficult. The biggest thing I would stress is research, research, reasearch. Not for old VB examples, but on the gnutella protocol itself. The research alone took me almost a month. The client is only about 15 days old so far.

Oh yeah, It's not slow, and it's not unusable. Not even in the IDE.

PS. I'm the one who found a serious bug in Bearshare 2.6.2, see thread: http://www.gnutellaforums.com/showth...threadid=12271

Taliban June 20th, 2002 03:49 AM

Quote:

If you know what you are doing, there is NOTHING that you cannot accomplish in VB.
Errr, - writing a simple calculator program that works on Solaris systems, cooking tea...

Gnutellian June 20th, 2002 03:56 AM

OK...
 
There's always one...

Just trying to show that it can be done, and trust me, it's not that hard.

Unregistered June 20th, 2002 05:10 PM

All that wasted time when you could have just learned C.
So what, you took IE and called it from your BASIC program, big deal, I am impressed.
You are the typical stubborne, geeky programmer type that won't change his ways. So nothing I can say will convince you, have fun re-writing the world in a un-supported, ancient 1970's language while we all advance past you with lightning speed.

It's called leaving you in the dust.

C is very close to machine code and thus compiles down nicely. Yes you have to be a real programmer and watch out not to trash memory because the language doesn't handle all that stuff for you, but due to NO overhead you get faster, better code for it.
C is easily portable to other platforms and processors if you want that.
Plus you can do multi threading, go look that up.

Gnutellian June 20th, 2002 05:47 PM

Quote:

Originally posted by Unregistered
So what, you took IE and called it from your BASIC program, big deal, I am impressed.

Look at the statusbar you dope. three clients connected, horizon over 2900, etc.. that was just for the 18min that it was up in the ide. Oh yeah theres a thing called the IMMIEDIATE WINDOW. there you can see the reception and transmission of packets.

Register so we can all see who you are, and tell me do you know ANYTHING about writing code in VB or C? I'll bet not much. A picture tells a thousand words, and all you could see was a window showing YOUR stupid post. DUH, I put it there for you to see...

Idiot.

Unregistered June 20th, 2002 09:24 PM

OK I am further impressed because you wrote some print statements that make it look like you did something.
Don't blow a fuse, it's only BASIC.
How will registering tell you anything about me? Anyone can get a hotmail account.
I could even register under two different names and argue with myself all day long and you wouldn't know that I was doing it.
So who's the fool now? Do you know anything about the internet?
Why don't you post for us your full name, address, SS# and a valid credit card number so we know who you are.
Doesn't matter who I am, it matters that you are wasting your time with VB.

Dear Mr. 64.24.x.x.x
There are apparently many things you do not know about the internet, as well.

Something which DOES matter quite a lot around here is that you are continuously posting with negative comments and simplistic general slagging off of people. You are a frequent poster and unfortunately your message is always the same -
Snide and sarcastic attacks followed by an inevitable vaccuum of positive assistance with the attending non-display of your knowledge.
Cool it, OK, please?

Unregistered June 21st, 2002 05:10 AM

OK, sorry Gnutellian, I have a strong opinion against using BASIC to develop a professional program, and you have a strong opinion about VB so we will leave it at that.
I guess it's wrong here to have a strong opinion about anything now.

ursula June 21st, 2002 07:00 AM

Now, now, Mr. 64.24.x.x.x

You are both entitled to your strong opinions and welcome to voice them here.
It is a matter of style and pleasant behaviour which is the problem to date.........
You will benefit yourself and others far more by sharing your opinions in a non-aggressive manner, that's all.
I have strong 'opinions' about many things, but it is senseless to present them in an overly-aggressive manner because you only switch off the listener.
I do agree with your general comment about trying to dissuade people from 'wasting their time' in basic, so keep at it but with a bit of "golden rule" stuff and maybe a droplet of humour every so often!!!!!!

And, register, huh? :eek:

tshdos June 21st, 2002 07:09 AM

Unregistered, do you have any particular reason you do not like VB?

Gnutellian June 21st, 2002 11:35 AM

My only point was to show GAMER that the creation of a client was possible in VB. I never stated that this was to be a 'Professional' or 'Commercial' app. This is\was simply an exercise to test:

A, My ability as a programmer.

B, VB's ability as a programming language.

I never expected to be attacked by expressing that, if GAMER wished to attempt writing a client in VB then by all means attempt it. I am by no means a 'Black Belt' programmer, but I have managed to accomplish what he wishes to attempt. I never assumed that a vote of confidence would have resulted in the bashing of a programming language that UNREGISTERED appears to lack the skill to master.

UNREGISTERED:

I do know C++, and you can 'thread' in vb.

GAMER:

By all means, If you wish to write a client in VB, do so. It can be done.

and so am I...

Unregistered June 21st, 2002 03:51 PM

Quote:

Originally posted by ursula
I have strong 'opinions' about many things, but it is senseless to present them in an overly-aggressive manner because you only switch off the listener.
I do agree with your general comment about trying to dissuade people from 'wasting their time' in basic, so keep at it but with a bit of "golden rule" stuff and maybe a droplet of humour every so often!!!!!!

I'm not the type to sugar coat everything, life is not disneyland happy all the time.
Quote:

And, register, huh?
What does that solve? Won't make a difference. And I need to know who you are first, please post more personal information, like your real name, and more about yourself because you are still anonymous to me even though you are "registered". Who are you???

ursula June 21st, 2002 04:27 PM

Who am I?
Why, I am someone who out-ranks you here. :p

Now, be a good boy and answer Gnutellian's questions.

Remember, YOU are the one who crashed into this thread with your comments, and YOU are the one who has either to prove the merit of your points or shut-up.

Unregistered June 22nd, 2002 05:54 AM

[ inappropriate post removed ]

Gamer June 26th, 2002 03:10 PM

Somebody definately hates vb, eh?

VB is a good language, however it may get a bit resource hungry with processor usage. Making C++ dll's to do much of the work would be the best idea, since VB is excellent for making simple, fast and slick GUI's... I'll have to continue reading up on the ever changing protocol and see how well vb can manage.. Gnotella was good enough, why not =)

fireforce June 26th, 2002 06:54 PM

VB is also very good at databases. And other sorts of internet powered apps(FTP, chat clients).



And as to the question of "if you dont have time to learn a new language how do you have time to code a VB client from scratch"
There are 2 well known VB gnutella clients, both old and neither will connect. The most likely candidate to be updated is Coyotella, but I have never been able to establish a good hookup with it.

rainmanp7 September 30th, 2002 11:19 AM

Um yeah Right
 
You can Program a gnutella Client in any language
that would support TCPIP

any yes VB C++ and Delphi can do Multithreading
as well as handel all the commands and all
the rest of the crap

"You Can have the Best Computer and Programming
Language in the World and still have the Dumbest
Programmer right behinde the wheel"
= the Fastest Piece of **** you have ever seen.

What i tend to find is alot of greed

"yeah yeah put that hidden little Advertisment
in our program they will never find it
sure it will slow em down but we will make mad
cash = GREED aka Ignorance aka Spy wear"

You ever seen anyone relase any code anywhere
that some could actually get the hands on somthing
that actually really worked
i have downloaded and compiled
Delphi C++ VB any version
and still when i hit that button to make it
there is always a error or ya find out
if ya let it run by itself for say about 3 minutes
you don't even have to click a dam thing
and BAM it crashes all by itself...........
"But hey as i look back what was the name
of this project and what was it programmed in ?"
you will find it all over the place and the working stuff
well you might not find the code for that :(
Especially if it works and is somewhat stable

The worst one was i was debugging and fixing this one client
I won't mention any names
but when it connected and hooked to another client
it would wait on a Graph Display to give it time
to connect if it didn't display then it would kill the connection

that had to be the worse piece of crapola
i have ever compiled.

Please some release somthing tangable
that others can use and can be found other places
that actually works and has error handling
so others can get a good idea and help the comunity
ty sorry for the crap spelling :)

Maligui February 14th, 2008 04:54 PM

Hello fellow programmers (and haters). I am also writting a gnutella/gnutella2/bittorrent program in vb.net.

It can be easily done. It's all in the structure (as with any program). I have found a site that walks you through gnutella in c#. With a little knowledge in c# language, you can convert it to VB.

http://www.codeproject.com/KB/IP/gnucleus.aspx

For the VB.NET people:

1. You can multithread very easily.
2. .NET is implemented into Vista (tells you something).
3. .NET IS stable. I see more c++ programs crash then .NET.
4. .NET is managed, structured code. Making it wasy to continue devolopement.
5. Let face it. It's easier to learn so you can actually develope programs, you know, what a programmer does...

I have delt with these c#/vb haters for over a decade. They simply think they are better and above the language. Oh, well. I'll get over them. :)

arne_bab February 14th, 2008 11:42 PM

If you are determined to implement Gnutella in VB, then I won't stop you.

But remember that Gnutella is no longer as "simple" as it was in the 0.4 times.

Please have a look at Gnutella for Users - Gnufu to get a glimpse of the concepts you'll have to implement to create a compliant Gnutella client.

(I'm working on getting the specs wiki up again at the moment).

Maligui February 15th, 2008 12:10 PM

Shareaza Wiki
 
At the moment, I have downloaded Shareaza's source code. It is well documented in the Wiki on what does what. For example I went to the Wiki and types GNUTELA CONNECT (the handshake) and it told me what classes to look in.

Give me some time, C++ is not that hard to disect (its just messy). I can convert it into VB Code. Also I have found another resource in codeplex:
Zeral .Net - Home

These people are working on a open source project that implements BT, Emule, EDokey2000, and Gnutella. I may stop in to say hello, and see if I can help with Gnutella.

Anyways, untill I can disect the code, there are other options. GNUDNA (I think) is a library for Gnutella. Or, better yet, just enhace Gnutella to another level, any thoughts, I'll hop on board. Let's face it, it can be alot faster then it is, and I have some ideas on how.

baderboy December 31st, 2008 05:17 PM

i know this thread is old but for anyone wondering vb.net is very capable of doing this, all you need is a tcplistener, tcpclient, and streamreader/writer... and some knowledge of the gnutella protocol

arne_bab January 1st, 2009 12:17 PM

I think a problem might be performance and/or memory usage, at least for a full blown implementation including Ultrapeer support, QRP and similar.

For example the reason why Gnutella doesn't yet have an outdegree of 100 instead of 32 is that LimeWire gets overloaded with that many connections, and that's Java which is still lower level than VB.

baderboy January 2nd, 2009 04:45 PM

well if i ever get some free time i could work on a vb library for connecting to the gnutella network... it wouldnt be all that hard

arne_bab January 3rd, 2009 10:48 PM

Please tell us once you have something which works!

baderboy April 5th, 2009 03:29 PM

VB.net is very capable of creating a gnutella client, all you need to know is how to use the sockets classes, and how gnutella works.

arne_bab April 6th, 2009 06:06 AM

Please tell us once you have something which works!

AaronWalkhouse April 9th, 2009 09:38 AM

If anyone's still interested, here is the source of the DarkAlien Project, released under
the GPLv2 in 2004. It looks pretty extensive but I don't know how much you still have
to do to get it running.

DarkAlien.Gnutella.Client.(Visual.Basic.sourcecode .of.unfinished.project).zip


Quote:

This is the (unfinished) version of a Gnutella Client.
It is clean written and well structured. It supports
Ultrapeer, Compression, Download & Resume, Searching in
multiple Windows, GWebcache and all the basic client functions.
I finally released the code because we stopped developing
this code a year ago after it was too much work for us.
Hopefully our hard work will be appreciated, and hopefully
it will be useful.


All times are GMT -7. The time now is 09:17 AM.

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.