|
extract of the gpl faq:
"I'd like to incorporate GPL-covered software in my proprietary system. Can I do this?
You cannot incorporate GPL-covered software in a proprietary system. The goal of the GPL is to grant everyone the freedom to copy, redistribute, understand, and modify a program. If you could incorporate GPL-covered software into a non-free system, it would have the effect of making the GPL-covered software non-free too.
A system incorporating a GPL-covered program is an extended version of that program. The GPL says that any extended version of the program must be released under the GPL if it is released at all. This is for two reasons: to make sure that users who get the software get the freedom they should have, and to encourage people to give back improvements that they make.
However, in many cases you can distribute the GPL-covered software alongside your proprietary system. To do this validly, you must make sure that the free and non-free programs communicate at arms length, that they are not combined in a way that would make them effectively a single program.
The difference between this and "incorporating" the GPL-covered software is partly a matter of substance and partly form. The substantive part is this: if the two programs are combined so that they become effectively two parts of one program, then you can't treat them as two separate programs. So the GPL has to cover the whole thing.
If the two programs remain well separated, like the compiler and the kernel, or like an editor and a shell, then you can treat them as two separate programs--but you have to do it properly. The issue is simply one of form: how you describe what you are doing. Why do we care about this? Because we want to make sure the users clearly understand the free status of the GPL-covered software in the collection.
If people were to distribute GPL-covered software calling it "part of" a system that users know is partly proprietary, users might be uncertain of their rights regarding the GPL-covered software. But if they know that what they have received is a free program plus another program, side by side, their rights will be clear."
You're quite fun: you like to download sources made by others but don't want to share your one...
|
|
|
|
|
I have no qualms about sharing any changes/additions to original classes, but you're also forcing every program that uses these classes to be open-source; a large part of CodeProject's audience are commercial programmers. Could you consider changing to a difference license? You're needlessly preventing a large part of the programmer population from benefiting from your work
|
|
|
|
|
"a large part of CodeProject's audience are commercial programmers"
that means you selling code written by other people... that's why I put my code in GPL sorry for you
|
|
|
|
|
Sorry for most CodeProject people...
All I'd like is to use the udp.Socket_Server class in a freeware program, without having to release the complete source code for the entire program. GPL certainly has its uses, but for entire programs; not for a simple class or two that make lives of hobbyist (or commercial) programmers easier
|
|
|
|
|
I agree. The LGPL would have been a far more appropriate license for this code. Hopefully the author will reconsider using LGPL as it still allows updates to HIS code to be re-released to the public without us having to release our entire products of which his code may only contribute a small piece to.
|
|
|
|
|
Hi,
there is also LGPL - this is perfect for releasing classes which are part of libraries.
Pickig up the ideas and doing some sort of reverse engineering might be the problem you
are faced with.
Personally I do only use lgpl copyrighted code, not being confronted with legal stuff.
|
|
|
|
|
No, it's got nothing to do with stealing code. I head up two open source projects that are released under the Apache License. They're free. Because of GPL licensing, though, I can't use any GPL code in my free projects. Would you claim that the Apache projects aren't in the spirit of open-source?
Most Code Project visitors work for companies that have internal applications. They don't sell these applications - they're purely to support their business. GPL code requires that you release your code for all...something that causes problems when you're dealing with intellectual property issues.
I'd strongly recommend publishing it under the LGPL or something more flexible like the BSD, MIT or Apache licenses.
I'd like it if Code Project didn't allow GPL code, since it's too restrictive.
|
|
|
|
|
I agree GPL is a poor choice for a CP article. Thanks for pointing that out before I downloaded it, I wish CP would require license disclosure in the article.
-- modified at 11:34 Monday 24th July, 2006
|
|
|
|
|
I have been trying to build a port scanner just to learn a bit more about tcp/ip and socket programming. I came across your code and it helped me speed up my development.
The problem I am having is that when I try and create a TCP connection to a remote client using either your tcp_header class or mine, when I send the SYN flag I get back a SYN flag. However, when looking at the data through something like Ethereal I can see that in fact a SYN/ACK is sent back. What could I be doing wrong??
Thanks.
|
|
|
|
|
Hi,
I've not get this trouble now.
Have you the same result using the Network Stuff project with the packet
forging interface and packet capture interface ?
Or either the tcp connection helper in the packet forge ?
I'have try it on several different computers without any troubles.
Did you still get this trouble ?
Best regards
|
|
|
|
|
I have not taken a walk through this latest update of your source code, simply for the fact that it appears that you have decided to break every formatting rule of .NET coding standards.
How, you are able to continue coding in the older C style, is well beyond me. I really feel strongly about how difficult it is to read code that doesn't adhere to either Camel or Pascal casing.
Camel casing is quite popular among Java developers, where the method names are always first word lower, subsequent words being proper cased.
Camel casing sample...
startUsingCamelCasing(bool goodIdeaOrNot);
Where as Pascal casing proper cases all words in method and property names. Pascal casing is found throughout the .NET BCL (base class libraries), and imho IS much easier to read than all other coding standards.
Pascal casing sample...
PleaseUsePascalCasing(bool betterIdeaAccordingToMe);
To provide reasons besides shear bias, for my arguments. With older C style coding, where everything is lower cased, and underscores are used to separate words in methods or types, it's nearly impossible to discern the different between a variable, method, or a type! At least in Camel or Pascal casing the Type's are proper cased so that it's easy to identify classes and structs quickly over variables.
Not to mention some sort of scoping standards, like using m_ or _ to prefix class scoped variables. Large projects, and complicated code are bad enough without making everyone guess as to the scope of a variable, or even whether it's a variable and not a type or method!
If you would change your formatting to more closely follow either of these coding standards, I believe you would receive better feedback from your viewers. Many may be like me, and see strange formatting and simply walk away.
Please consider my suggestions, I in no way consider you a bad programmer because of your formatting, but you should adapt to standards that are popular to help your viewers and fellow programmers.
Only those who attempt the absurd, can achieve the impossible.
|
|
|
|
|
Sorry, I realize that I did not provide you with any decent resources to help aim you in the right direction, should you so choose to look into my suggestions.
Here's link that will provide you with best practice guidelines for naming conventions and a host of other coding topics. Whether you agree with my thoughts or not, this will help you to understand my perspective.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpconnamingguidelines.asp
Ps. I dig your efforts, and I gave you 5 regardless of not reading your update. I have read your code in the past, and you demonstrated a good working knowledge of a host of networking topics. And, simply because I love all efforts in network programming! Keep coding! This thread is merely a suggestion on formatting, not a flame!
Only those who attempt the absurd, can achieve the impossible.
|
|
|
|
|
Thanks for link, I'll look at it, but I'm not sure to follow all the rules in the futur Programming rules are changing quite often, and are not the same for all the languages and for all companies, so is one the best ?
|
|
|
|
|
yes, the coding style should follow foxcop suggests
Regards,
unruledboy@hotmail.com
|
|
|
|
|
Warning 1 The keyword new is required on 'easy_socket.icmp.icmp_destination_unreachable.get_available_codes()' because it hides inherited member 'easy_socket.icmp.icmp.get_available_codes()' C:\Documents and Settings\Administrator\Desktop\networkstuff_src_2003\icmp.cs 441 31
Warning 2 The keyword new is required on 'easy_socket.icmp.icmp_time_exceeded_message.get_available_codes()' because it hides inherited member 'easy_socket.icmp.icmp.get_available_codes()' C:\Documents and Settings\Administrator\Desktop\networkstuff_src_2003\icmp.cs 553 31
Warning 3 The keyword new is required on 'easy_socket.icmp.icmp_redirect.get_available_codes()' because it hides inherited member 'easy_socket.icmp.icmp.get_available_codes()' C:\Documents and Settings\Administrator\Desktop\networkstuff_src_2003\icmp.cs 846 31
Error 4 The call is ambiguous between the following methods or properties: 'System.Math.Floor(decimal)' and 'System.Math.Floor(double)' C:\Documents and Settings\Administrator\Desktop\networkstuff_src_2003\FormScan.cs 1593 27
I'm using Visual Studio 2005 C# Express Edition Beta 1.
It's a really nice program, I've downloaded the executable. Many people charge an arm and a leg for such network tools. Thanks
|
|
|
|
|
When I tried to ping, I got the following exception:
Illegal cross-thread operation: Control 'textBox_telnet' accessed from a thread other than the thread it was created on.\r\nStack trace where the illegal operation occurred was:\r\n\r\n\tat System.Windows.Forms.Control.get_Handle()\r\n\tat System.Windows.Forms.Control.get_WindowText()\r\n\tat System.Windows.Forms.TextBoxBase.get_WindowText()\r\n\tat System.Windows.Forms.Control.get_Text()\r\n\tat System.Windows.Forms.TextBoxBase.get_Text()\r\n\tat System.Windows.Forms.TextBox.get_Text()\r\n\tat Network_Stuff.CommonTelnetForm.textBox_telnet_add(String)\r\n\tat Network_Stuff.FormPing.ev_echo_reply(icmp_echo_reply, EventArgs_ipv4header_ReceiveData)\r\n\tat easy_socket.icmp.icmp_server.socket_data_arrival(ipv4_header, EventArgs_FullPacket)\r\n\tat easy_socket.ip_header.ipv4_header_server.thread_watching_reply()\r\n\tat System.Threading._Thread.ThreadStart_Context(Object)\r\n\tat System.Threading.ExecutionContext.Run(ExecutionContext, ContextCallback, Object, StackCrawlMark&)\r\n\tat System.Threading._Thread.ThreadStart()\r\n\"
I think it's the different verions of Visual Studio that are causing the problem
|
|
|
|
|
Could you specify the version
1) of framework
2) of vs compiler
thanks
best regards
|
|
|
|
|
The 3 warning are "normal"
To resolve the error just make a cast : System.Math.Floor((double)(...
it should resolve ambiguity
Unfortunatly I still don't have VS 2005
Best regards
|
|
|
|
|
I open over ten socket data
and pull a large data back
release version run on win2000(Dotnet 2003 ) will suddenlly dead and error message is dbgheap.c line 1132
expression : _CrtIsValidHeapPointer(pUserData)
I am not sure if is problem about this but could anyone guide me how to start trace ?
Appreciated any help
Scott_Wu
|
|
|
|
|
Based on your TCPTableEx code, I have now created an application just for capturing packets.
It has a connection view to show the packets in their connection context and a nice RichTextBox that shows the text of the tcp packets in color (red = outgoing, blue = incoming), so you can view the traffic on text based protocols (HTTP, FTP, ...) very easy.
http://download.danielgrunwald.de/TCPSniffer.zip [^]
|
|
|
|
|
nice job may you could had the right click (close connection and terminate process) as it's in the network stuff.
May should we make a common project on sourceforge ?
|
|
|
|
|
I can build this project, but it does not run, due to missing resources.
It dies on line 55 of FormMain.cs
this.imageList_tabpage_icons.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList_tabpage_icons.ImageStream")));
This is the error generated at runtime:
Application Name: Network Stuff
Application Version: 3.0.0.0
Error message: Could not find any resources appropriate for the specified culture (or the neutral culture) in the given assembly. Make sure "FormMain.resources" was correctly embedded or linked into assembly "Network Stuff".
baseName: FormMain locationInfo: Network_Stuff.FormMain resource file name: FormMain.resources assembly: Network Stuff, Version=3.0.0.0, Culture=neutral, PublicKeyToken=null
Full Description:
System.Resources.MissingManifestResourceException: Could not find any resources appropriate for the specified culture (or the neutral culture) in the given assembly. Make sure "FormMain.resources" was correctly embedded or linked into assembly "Network Stuff".
baseName: FormMain locationInfo: Network_Stuff.FormMain resource file name: FormMain.resources assembly: Network Stuff, Version=3.0.0.0, Culture=neutral, PublicKeyToken=null
at System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo culture, Boolean createIfNotExists, Boolean tryParents)
at System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo culture, Boolean createIfNotExists, Boolean tryParents)
at System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo culture, Boolean createIfNotExists, Boolean tryParents)
at System.Resources.ResourceManager.GetObject(String name, CultureInfo culture)
at System.Resources.ResourceManager.GetObject(String name)
at Network_Stuff.FormMain.InitializeComponent()
at Network_Stuff.FormMain..ctor()
at Network_Stuff.FormMain.Main()
|
|
|
|
|
It's seems we can't remove sources with vs2002. On Vs 2003 just clique the forms in the edi and resx files are recreated if they are missing (using resx VS 2002 can cause bad disposition on vs 2003; and vs 2003 files can't be read on vs 2002. Thanks to microsoft
|
|
|
|
|
the to projects are now on this page with resx:
on for vs 2002 and the other for vs 2003
|
|
|
|
|
I have 32 the same warnings:
c:\0\tcp_header.cs(955,45): warning CS0618: 'System.Net.IPAddress.Address' is obsolete: 'IPAddress.Address is address family dependant, use Equals method for comparison.'
Can i fix these warnings, because i go in crazy when i see them!
Thank you so much for the great program!
Angel Tsvetkov
|
|
|
|