![]() |
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 =) |
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. |
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. |
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! |
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. |
I found an active x control somebody else made that is great for this type of use =) |
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. |
yea... I've found a somewhat working one under the gpl but its based off 0.4 specs.. |
Quote:
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. |
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. |
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. |
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. |
1 Attachment(s) Quote:
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 |
Quote:
|
OK... There's always one... Just trying to show that it can be done, and trust me, it's not that hard. |
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. |
Quote:
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. |
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? |
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. |
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: |
Unregistered, do you have any particular reason you do not like VB? |
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... |
Quote:
Quote:
|
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. |
[ inappropriate post removed ] |
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 =) |
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. |
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 :) |
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. :) |
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). |
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. |
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 |
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. |
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 |
Please tell us once you have something which works! |
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. |
Please tell us once you have something which works! |
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:
|
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.