Chinaunix首页 | 论坛 | 博客
  • 博客访问: 245160
  • 博文数量: 20
  • 博客积分: 1530
  • 博客等级: 上尉
  • 技术积分: 525
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-31 16:26
文章分类

全部博文(20)

文章存档

2018年(2)

2012年(1)

2011年(4)

2010年(5)

2009年(2)

2008年(6)

我的朋友

分类: C/C++

2010-05-27 17:06:38

这些年一直做一些与开源软件有关的开发,这里做一个汇总,以后大家可以按这个清单直接找到合适自己的开源库,应用到实际产品中去。
 
一、有关xml操作的开源库
 
1. Xerces
 
Xerces is a collection of software libraries for parsing, validating, serializing and manipulating XML. The library implements a number of standard for XML parsing, including DOM, and SAX2. The implementation is available in , and programming languages
 
2. Libxml

Libxml2 is the XML C parser and toolkit developed for the Gnome project (but usable outside of the Gnome platform), it is free software available under the . XML itself is a metalanguage to design markup languages, i.e. text language where semantic and structure are added to the content using extra "markup" information enclosed between angle brackets. HTML is the most well-known markup language. Though the library is written in C make it available in other environments.

3. expat

Expat is an XML parser library written in C. It is a stream-oriented parser in which an application registers handlers for things the parser might find in the XML document (like start tags). An on using Expat is available on

二、Log tools

1. log4cxx

Apache log4cxx is a logging framework for C++ patterned after . Apache log4cxx uses for most platform-specific code and should be usable on any platform supported by APR. Apache log4cxx is licensed under the , an open source license certified by the

2. log4cpp
 
Log4cpp is library of C++ classes for flexible logging to files, syslog, IDSA and other destinations. It is modeled after the Java library, staying as close to their API as is reasonable
 
三、正则表达式解析器
 
1. boost
2. PCRE
Perl Compatible Regular Expressions (PCRE) is a inspired by 's external interface, written by . PCRE's syntax is much more powerful and flexible than either of the flavors and many classic regular expression libraries. The name is misleading, because PCRE is Perl-compatible only if you consider a subset of PCRE's settings and a subset of Perl's regular expression facilities.
 
四、目录服务(LDAP)
is an implementation of the Lightweight Directory Access Protocol.

Detail please refer to

Short for Lightweight Directory Access Protocol, a set of for accessing information directories. LDAP is based on the standards contained within the standard, but is significantly simpler. And unlike X.500, LDAP supports , which is necessary for any type of access. Because it's a simpler version of X.500, LDAP is sometimes called X.500-lite.

Although not yet widely implemented, LDAP should eventually make it possible for almost any application running on virtually any computer platform to obtain information, such as email addresses and . Because LDAP is an open protocol, applications need not worry about the type of the directory.

五、网络安全协议Open SSL

The OpenSSL Project is a collaborative effort to develop a robust, commercial-grade, full-featured, and toolkit implementing the Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS v1) protocols as well as a full-strength general purpose cryptography library. The project is managed by a worldwide community of volunteers that use the Internet to communicate, plan, and develop the OpenSSL toolkit and its related documentation.

OpenSSL is based on the excellent SSLeay library developed by Eric A. Young and Tim J. Hudson. The OpenSSL toolkit under an Apache-style licence, which basically means that you are free to get and use it for commercial and non-commercial purposes subject to some simple license conditions

六、DNS(Domain Name System)

The Domain Name System, or DNS, is one of the Internet's fundamental building blocks. It is the global, hierarchical, and distributed host information database that's responsible for translating names into addresses and vice versa, routing mail to its proper destination, and many other services.

(Another fundamental building block of the Internet is
, the routing protocol used to exchange routing information across the Internet. It is discussed in depth on our companion website about ).

To understand what DNS does, let's take this small example. You'd like to visit a website,

After entering the website location, the browser has to find out the IP address of the host Therefore it makes a query to the local DNS resolver, which in turn queries the local DNS server. The DNS server does some more work - quickly finds out the matching IP address - and returns this answer back to the resolver.

In DNS jargon, this lookup is called a query for the "A record". This record describes the relation between a hostname and the corresponding IP address in DNS.

Your web browser is now able to contact the host using its IP address. Further information retrieval takes place using the
, which is not discussed here.

Of course, the complete DNS resolving process is slightly more complicated. But finding the corresponding IP address for a hostname -or vice versa- is one of the basic tasks of DNS. The DNS protocol however has a lot more features and applications. For a complete understanding of the workings of the Domain Name System, you're encouraged to visit the
links section on this website.

The original DNS protocol is described in RFC 1034 and RFC 1035.

  • - Introduces domain style names, their use for Internet mail and host address support, and the protocols and servers used to implement domain name facilities.
  • - Describes the details of the domain system and protocol, and assumes that the reader is familiar with the concepts discussed in a companion RFC 1034.

BIND (Berkeley Internet Name Domain) is an implementation of the and provides an openly redistributable reference implementation of the major components of the Domain Name System, including:

  • Domain Name System server
  • Domain Name System resolver library
  • Tools for managing and verifying the proper operation of the DNS server

The BIND DNS Server, named, is used on the vast majority of name serving machines on the Internet, providing a robust and stable architecture on top of which an organization's naming architecture can be built.

The resolver library included in the BIND distribution provides the standard APIs for translation between domain names and Internet addresses and is intended to be linked with applications requiring name service.

BIND version 9 is a major rewrite of nearly all aspects of the underlying BIND architecture. Some of the important features of BIND9 are DNS Security (, ), , DNS Protocol Enhancements (, , , ), Views, Multiprocessor Support, and an Improved Portability Architecture.

Today, BIND versions 4 and 8 are officially deprecated. No bug or security related patches are available. ISC encourages all BIND users to to the latest version 9 at their earliest convenience.

In the links section you'll find a lot of BIND howtos, notes and links related to configuring the BIND nameserver. And there's an online version of the where you can learn how to configure your BIND nameserver.

 
七、SNMP(Simple Network Management Protocol)

Simple Network Management Protocol (SNMP) is a widely used protocol for monitoring the health and welfare of network equipment (eg. routers), computer equipment and even devices like UPSs. Net-SNMP is a suite of applications used to implement , and using both IPv4 and IPv6. The suite includes:

  • Command-line applications to:
    • retrieve information from an SNMP-capable device, either using single requests (, ), or multiple requests (, , ).
    • manipulate configuration information on an SNMP-capable device ().
    • retrieve a fixed collection of information from an SNMP-capable device (, , ).
    • convert between numerical and textual forms of MIB OIDs, and display MIB content and structure ().
  • A graphical MIB browser (tkmib), using Tk/perl.
  • A daemon application for receiving SNMP notifications (). Selected notifications can be logged (to syslog, the NT Event Log, or a plain text file), forwarded to another SNMP management system, or passed to an external application.
  • An extensible agent for responding to SNMP queries for management information (). This includes built-in support for a wide range of MIB information modules, and can be extended using dynamically loaded modules, external scripts and commands, and both the SNMP multiplexing () and Agent Extensibility () protocols.
  • A library for developing new SNMP applications, with both C and perl APIs.

Net-SNMP is available for many Unix and Unix-like operating systems and also for Microsoft Windows. Note: Functionality can vary depending on the operating system. Please see the for information specific to your platform.

八、gsoap

The gSOAP toolkit is an open source C and C++ software development toolkit for SOAP/XML Web services and generic (non-SOAP) C/C++ XML data bindings. The toolkit analyzes WSDLs and XML schemas (separately or as a combined set) and maps the XML schema types and the SOAP messaging protocols to easy-to-use and efficient C and C++ code. It also supports exposing (legacy) C and C++ applications as SOAP/XML Web services by auto-generating XML serialization code and WSDL specifications. Or you can simply use it to automatically convert XML to/from C and C++ data. The toolkit supports options to generate pure ANSI C or C++ with or without STL.
 
The gSOAP toolkit offers a comprehensive and transparent C/C++ XML data binding solution through autocoding techniques. This saves developers substantial time to implement SOAP/XML Web services in C/C++. In addition, the use of XML data bindings significantly simplifies the use of XML in applications by automatically mapping XML to C/C++ data types. Application developers no longer need to adjust the application logic to specific libraries and XML-centric data representations such as DOM.
 

The gSOAP toolkit implements an ANSI C and C++ XML data binding through the use of compiler technologies. These technologies map XML schemas to C/C++ definitions and vice versa. There are two main advantages to this approach. Firstly, strong typing ensures safe use of typed data in your application and also guarantees that the XML data has passed XML parsing validation. Secondly, compiler-based schema-specific parsing and validation is more efficient than most other XML parsing techniques.

九、CURL

curl is a command line tool for transferring data with URL syntax, supporting DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET and TFTP. curl supports SSL certificates, HTTP POST, HTTP PUT, FTP uploading, HTTP form based upload, proxies, cookies, user+password authentication (Basic, Digest, NTLM, Negotiate, kerberos...), file transfer resume, proxy tunneling and a busload of other .

十、压缩工具

1. zlib

zlib is designed to be a , general-purpose, legally unencumbered -- that is, not covered by any patents -- lossless data-compression library for use on virtually any computer hardware and operating system. The zlib data format is itself portable across platforms. Unlike the LZW compression method used in Unix compress(1) and in the GIF image format, the compression method currently used in zlib essentially never expands the data. (LZW can double or triple the file size in extreme cases.) zlib's memory footprint is also independent of the input data and can be reduced, if necessary, at some cost in compression. A more precise, technical discussion of both points is available on .

2.7-Zip

7-Zip is open source software. Most of the source code is under the GNU LGPL license. The unRAR code is under a mixed license: GNU LGPL + unRAR restrictions. Check license information here: .

阅读(1103) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~