{"id":13929970,"url":"https://github.com/ProjectCCNx/ccnx","last_synced_at":"2025-07-19T12:31:17.509Z","repository":{"id":666807,"uuid":"309964","full_name":"ProjectCCNx/ccnx","owner":"ProjectCCNx","description":"THIS REPOSITORY IS NO LONGER MAINTAINED.   IT HAS BEEN COMPLETELY REPLACED BY https://github.com/PARC/CCNx_Distillery","archived":false,"fork":false,"pushed_at":"2020-10-13T08:55:24.000Z","size":19138,"stargazers_count":157,"open_issues_count":1,"forks_count":63,"subscribers_count":44,"default_branch":"master","last_synced_at":"2024-08-08T18:25:38.161Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://www.ccnx.org","language":"Java","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ProjectCCNx.png","metadata":{"files":{"readme":"README","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2009-09-17T17:17:23.000Z","updated_at":"2024-02-28T19:07:14.000Z","dependencies_parsed_at":"2022-08-16T10:35:26.499Z","dependency_job_id":null,"html_url":"https://github.com/ProjectCCNx/ccnx","commit_stats":null,"previous_names":[],"tags_count":32,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ProjectCCNx%2Fccnx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ProjectCCNx%2Fccnx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ProjectCCNx%2Fccnx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ProjectCCNx%2Fccnx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ProjectCCNx","download_url":"https://codeload.github.com/ProjectCCNx/ccnx/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226607570,"owners_count":17658474,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-07T18:02:39.154Z","updated_at":"2024-11-26T19:30:43.750Z","avatar_url":"https://github.com/ProjectCCNx.png","language":"Java","readme":"Content-Centric Networking CCNx Reference Implementation\n========================================================\n\nThe CCNx reference implementation provides the libraries and components\nrequired to build and run applications that use and demonstrate the\nbasic CCNx protocols for experimental and research purposes.\n\nThe protocol specifications and the reference implementation are at an\nearly research stage of development, and are released to enable\ncollaboration with researchers.  What is provided at this time is pure\ninfrastructure, with no applications of interest.  Documentation is\nalso minimal, and so using the release software will require technical\nsophistication and a willingness to read the code.\n\nThis work is free software; you can redistribute it and/or modify it under\nthe terms of the appropriate licenses as covered in the file LICENSE\nand noted in each source file.\n\nThis software is distributed in hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the file\nLICENSE for more information.\n\n* Please see the file LICENSE for important licensing details and limitations.\n* Please see the file NOTICES for important notices.\n\nFor more information about Project CCNx, see our website at http://www.ccnx.org.\n\nThis file provides introductory information in the following sections:\n\n1. Package contents\n2. Supported platforms and development tools\n3. Build and install instructions\n4. Running the programs\n5. Runtime files\n6. Support and contact information\n\nREADME files in other directories provide platform and application-specific\nnotes and instructions.  Top-level examples include the following:\n\n    android/README.build\n    csrc/README.cygwin\n    csrc/README.darwin\n    csrc/README.freebsd\n    csrc/README.linux\n    csrc/README.netbsd\n    csrc/README.solaris\n    csrc/ccnd/README\n    doc/manpages/README\n\n\n## 1. Package contents ##\n\nThis distribution includes the following things:\n\nA. Preliminary specifications of CCNx protocol, application protocols\n   and conventions.\n\nB. C/POSIX reference implementation of CCNx forwarder, repository\n   (persistent stroage of CCNx data, with synchronization), library,\n   primitive utilities, skeleton API docs, and unit test suite.  The C\n   implementation is required for all CCNx communication.\n\nC. Java reference implementation of library including primitive\n   utilities, skeleton API docs, and unit test suite.  The Java\n   library has more functionality implemented or started than the C\n   library and may be an easier place to start experimenting.\n\nD. Minimal sample app (ccnChat) to demonstrate basic communication on\n   local LAN.\n\nE. Minimal sample file proxy (ccnFileProxy) to demonstrate basic\n   communication on local LAN.\n\nF. Experimental plugins for vlc (media transport) and wireshark\n   (packet dissector)\n\nG. An Android implementation for smartphones.  The Android implementation\n   has a service wrapper for ccnd and the repository.  It also has\n   a CCN Chat implementation.\n\nDocumentation is built from source files of various kinds (using a\ncombination of doxygen and asciidoc) BUT the distribution includes pre-built\ndocumentation so it is not necessary to have a build environment and\ntoolchain configured to start reading. Point your browser at\n`doc/index.html` to get started.\n\nThe file tree is organized as follows:\n\n* `README` - this file\n* `LICENSE` - license terms that apply to the distribution\n* `MANIFEST` - listing of every file in the distribution\n* `MD5` - MD5 sum for every file in the distribution\n* `NEWS` - release notes\n* `NOTICES` - CCNx notices\n* `SHA1` - SHA1 sum for every file in the distribution\n* `configure` - master configure script.  Note that configure scripts are\n       hand-written at this time, not generated by autoconf\n* `android/` - The Android implementation\n* `android/apps` - Android applications that use CCNx\n* `android/apps/CCNx-Android-Chat` - The CCNx Chat application for Android\n* `android/CCNx-Android-Lib` - A common Android Library for working with CCNx\n* `android/CCNx-Android-Services` - Wrappers for ccnd and repository\n* `android/external` - External libraries needed for ARM\n* `apps` - experimental/sample apps tree\n* `apps/ccnChat` - simple text chat sample in Java\n* `apps/ccnFileProxy` - simple proxy making local files available via CCNx\n* `apps/examples` - small example programs and code snippets\n* `apps/HttpProxy` - sample HTTP proxy that converts HTTP Gets to CCN interests\n* `apps/vlc` - vlc plugin for media transport experiments\n* `apps/wireshark` - wireshark plugin dissector for decoding CCNx packets\n* `csrc/` - C code tree\n* `csrc/ccnd` - CCN daemon, the user-space forwarder implementation\n* `csrc/ccnr` - repository daemon, for persistent storage of content\n* `csrc/cmd` - simple command-line utilities\n* `csrc/conf` - OS-specific configuration scripts etc.\n* `csrc/contrib` - third-party library needed for certain platforms that\n       are POSIX-deficient\n* `csrc/include/ccn` - C header files\n* `csrc/lib` - C application library implementation\n* `csrc/libexec` - connectivity utilities, especially ccndc, the ccnd\n       configurator and connectivity agent\n* `csrc/rc` - sample rc scripts for automatic daemon startup\n* `csrc/sync` - sync protocol implementation\n* `csrc/tests` - C test suite\n* `csrc/util` - launch script support\n* `doc/` - documentation tree\n* `doc/android` - API documentation generated from Java code for Android\n* `doc/ccode` - API documentation generated from C code\n* `doc/javacode` - API documentation generated from Java code\n* `doc/manpages` - CCNx man pages\n* `doc/technical` - specifications\n* `experiments/multicast` - scripts for running multi-machine experiments in content\n       distribution performance over local multicast group.\n* `javasrc/` - Java code tree.  The usual Java conventions are used for mapping\n       package names to the file tree, with root package [org.ccnx.ccn](org.ccnx.ccn).\n* `javasrc/lib` - third-party libraries\n* `javasrc/src` - Java source tree\n* `javasrc/tools` - convenience scripts\n* `schema` - XML schema and DTD files\n* `vendor` - unmodified copies of included third-party code\n\nAfter building, the following notable directories will appear:\n\n* `bin/` - command-line tools you can run, providing convenience access to\n  mixture of C and Java utilities and samples\n* `lib/` - all libraries needed for applications (both C and Java)\n* `include/` - headers needed for applications in C\n* `javasrc/build` - Java build outputs from ant (`javasrc/bin` is equivalent\n       for Eclipse)\n\nNote that these directories are entirely generated and will be removed\nby some clean targets, so don't use them for anything you want to keep.\n\n\n## 2. Supported platforms ##\n\n__OS PLATFORMS__\n\nOnly Unix-like platforms are currently supported.  CCNx code is tested\non Ubuntu Linux, MacOS, Solaris, and FreeBSD.  Some packaging for\nCygwin is currently provided but is not fully supported and there is\nno other support for Windows platforms yet.\n\nAndroid is supported in the `android/` tree.  It only introduces minimal\nnew code specific to the Android platform and otherwise re-uses the\nexisting CCNx C and Java code.\n\n__C LANGUAGE REQUIREMENTS AND TOOLS__\n\nFor parts of the system written in C, you will require a standard\ntoolchain including gcc, make. etc. and the following libraries which\nare not included in the distribution.\n\n* libcrypto \u003e= 0.9.8 from openssl available from http://openssl.org/source/\n* expat available from http://sourceforge.net/projects/expat/\n* libpcap available from http://www.tcpdump.org\n     (optional, needed for certain utilities only)\n*  libxml2 available from xmlsoft.org\n\nIn addition, you will need vlc and wireshark to build and use the CCNx\nplugins for those packages.  Please see the individual README files\nfor more information.\n\nSee `csrc/README*` files for further notes about what needs to be installed or\nconfigured on each OS.\n\n__JAVA LANGUAGE REQUIREMENTS AND TOOLS__\n\nFor parts of the system written in Java, CCNx code is tested with\nJava JDK 1.6 and 1.7 only, with ant used as the canonical build tool.\nYou will need:\n\n* ant (\u003e= 1.8.2 tested, download latest version from: http://ant.apache.org/bindownload.cgi)\n\nEclipse `.project` and `.classpath` files are included in the distribution\nso you can create Eclipse projects easily that will resolve\ndependencies correctly.  There are three Eclipse Java projects\ndefined: one in `javasrc` (Eclipse project name `CCNx-Java`) and one each\nin `apps/ccnChat` (Eclipse project name `ccnChat`) and `apps/ccnFileProxy`\n(Eclipse project name `ccnFileProxy`).  To import one of these projects\ninto your Eclipse workspace, choose File/Import... from the menu, open\nthe General category in the Import dialog and select \"Existing\nProjects into Workspace\".  Type in (or browse to) the appropriate\ndirectory and you should see the named Project listed and selected so\nyou can click Finish to complete the import.\n\n__SPECIAL PLATFORM NOTES__\n\n_Solaris_\n\nYou will need to use gmake rather than make.\n\n_Android_\n\nPlease see `android/README` for special notes about Android.\n\n_Ubuntu_\n\nAs a result of Sun Java JDK packages being removed for Ubuntu (see\nhttps://lists.ubuntu.com/archives/ubuntu-security-announce/2011-December/001528.html), we are now using OpenJDK for Ubuntu. Please see csrc/README.linux\nfor more information.\n\n\n## 3. Build and install instructions ##\n\nNote that the overall build handles both the C and Java code,\nso you will need to have requirements for both met in order\nto avoid errors.  See the section above. See `android/README.build`\nfor information on building for Android.\n\n__BUILDING__\n\nIn the root directory:\n\n    ./configure\n    make\n\nThe top-level build will compile both C and Java code, but\nnot Android code.  The above is sufficient to run programs\nlocally out of `bin/` and build apps referencing `lib/` and `include/`.\n\nFor users of Maven, it is now possible to build the javasrc.  From the\ntop-level:\n\n    mvn clean package\n\nwill produce a library, javadocs, and sources in separate jar files\nunder javasrc/target.  This is provided as a convenience for users of\nthe Maven ecosystem of tools.  The Maven build does not support the\nfull suite of tests yet.\n\n__TESTING__\n\nTo run the complete test suite (both C and Java):\n\n    make test\n\n__MACHINE INSTALL (OPTIONAL)__\n\nTo install to a standard location on your machine you may also use\n\n    make install\n\n__FURTHER DOCUMENTATION__\n\nSee the notes in the Content-Centric Networking in C in the top-level\ndocumentation.\n\n\n## 4. Running the programs ##\n\nThese notes assume that you have performed the build steps listed\nabove, but not performed a machine install.  Everything may be run\ndirectly out of the build tree using programs in `bin/`.\n\n__CCND__\n\nAll CCNx programs require that a ccnd be running:\n\n    bin/ccndstart\n\nTo start ccnd sending output to a log file instead of the terminal,\nset the `CCND_LOG` environment variable with the path of the file you\nwant to write.  Any existing file with that name will be overwritten.\n\nFor a listing of other environment variables that are available\n(including debug message controls) run:\n\n    bin/ccnd -h\n\nNote that you should not ordinarily run ccnd directly, but use the\nccndstart script.\n\nFor experiments on one machine it is sufficient to have a ccnd running\nwithout using a ccnd configuration file, however for multiple machine\nexperimentation you will need to use ccndc to configure the inter-machine\nforwarding of interest/content.\n\nIf a `$HOME/.ccnx/ccnd.conf` file is present then ccndstart will execute\n\n    ccndc -f $HOME/.ccnx/ccnd.conf\n\nFor a sample file, see `csrc/libexec/ccnd.conf.sample`\n\n__REPOSITORY__\n\nThe repository provides persistent storage of CCNx content backed by a\nfile system, and responds to interests in the content it has available.\n\nStart a repository with the `CCNR_DIRECTORY` environment variable set to\nthe fully qualified pathname of the repository file directory.\n\n    bin/ccnr\n\nThe directory named by `CCNR_DIRECTORY` must exist already.\nTo start ccnr as a daemon, redirect stderr to a file and execute\n\n    bin/ccnr \u0026\n\nccnr shuts down gracefully if it receives `SIGINT` or `SIGTERM`, or if the\nccnd to which it is connected is shut down.\n\nDo not run two repositories on the same backing store directory at the\nsame time.\n\nIt is sometimes helpful to get a list of the names of stored content held\nby a repository.  To do this, use\n\n    ccnnamelist $CCNR_DIRECTORY/repoFile1\n\nA configuration file in `$CCNR_DIRECTORY/config` and/or environment\nvariables can be used to control some settings. Most important is probably\nthe `CCNR_GLOBAL_PREFIX` parameter, which is a namespace for\nconfiguration information about this repository that is expected by\nconvention to be globally unique and meaningful, rather than only locally\nunique and contextually meaningful.\n\n    bin/ccnr -h\n\ngives configuration options.  For more information about repository\nconfiguration, see the ccnr man page at `doc/manpages/ccnr.html`.\n\nA policy file specifies the namespaces for which the repository accepts\nand holds content. The name of the policy file is the concatenation of\nthe global prefix and \"`data/policy.xml`\". The actual encoding of the\nfiles is in ccnb form, and it must be stored in the repository to take\neffect. Unless an alternative policy has been explicitly\nwritten/published under the policy information name, the\nthe policy defaults to `/`, which means that writes will be accepted for\nany name and reads serviced for any name for which there is content.\nThe command `ccnrpolicyedit` may be used to edit the policy.\nFor more information about policies, see `doc/technical/RepoPolicies.html`.\n\n__UTILITIES__\n\nThere are a variety of simple utilities in `bin/`.  Some of them have\nusage messages, but the handling of arguments and usage messages is\ninconsistent as of this release.  Here are a few notable utilities:\n\n* `ccnexplore` - primitive GUI browser in Java, usable to browse only\n               repo content since it requires name enumeration support\n               available only there.  Also allows writing files to repo.\n* `ccnls` - primitive content listing by retrieval\n* `ccnlsrepo` - command-line content listing from repo (via name \n                enumeration)\n* `ccnputfile` - command-line tool to send file as CCNx data (asks repo\n               to receive unless -raw arg given)\n* `ccngetfile` - command-line tool to retrieve CCNx content and store it\n               in file\n* `ccnchat` - the ccnChat sample application\n* `ccnfileproxy` - the ccnFileProxy sample application\n\n\n## 5. Runtime files ##\n\nBeware that running the experimental software will create a variety of\nfiles, and that this list may not be complete:\n\n* `~/.ccnx` - per-user directory, used primarily for personal keystore and\n         key cache\n* `~/.rmi-server-*` - per-user files Java daemon RMI interface objects.\n         These are supposed to be cleared away automatically but that\n         does not occur if processes are terminated manually and in\n         other cases.\n\nRepository directories are also created if you run a repository, but\nin that case you must tell the program what directory to use.\n\n\n## 6. Support and contact information ##\n\nSupport for CCNx is primarily found on the ccnx.org mailing lists.  There\nare three lists: ccnx-dev@ccnx.org (For Developers), ccnx-users@ccnx.org\n(for Users) and ccnx-interest@ccnx.org (for NEW and Updates).  Find out\nmore at:\n    http://www.ccnx.org/subscribe-to-the-mailing-lists/\n\nLive support can be found in realtime on IRC: #ccnx\n\nPlease see our website at http://www.ccnx.org.\n\n## 7. Contributions ##\n\nFor developers looking to provide bug fixes, documentation, code samples, or\nnew features, we recommend first reviewing our process for contributing code\nonline:\n    http://www.ccnx.org/support/contributing-code/\n\nAll code contributions and patches will require individuals to sign a\nContributor Agreement.  Individuals representing an organization should\nfirst consult with their own legal departments before singing anything.\nOnce we have a ratified document, we are free to take in source\ncontributions.  We strongly recommend using the Fork feature of Github\ndescribed here:\n    http://help.github.com/fork-a-repo/\n\nWhen code is ready for review, send a Pull Request, described here:\n    http://help.github.com/send-pull-requests/\n\nThis process creates a nice dialogue and fosters transparency in the\nprocess.\n\nFor organizations interested in contributing large bodies of work, we\nrecommend contacting the project leads to discuss a Software Grant\nAgreement.\n\nIf signing a Contributor Agreement is not possible due to organizational\nor legal restrictions, there are other ways to get involved, including\ncontributing interesting code on our WIKI at: https://www.ccnx.org/wiki\n\n## 8. Related Work ##\n\nWe are actively interested in promoting and fostering development and\ncollaboration within the CCNx Community.  If you have something great to\nshare related to CCNx, built on, forked from, or otherwise of interest to\nthis Community, please contact us.  We will be looking for ways to publish\ncommunity project via http://www.ccnx.org on our WIKI.\n","funding_links":[],"categories":["others","网络编程"],"sub_categories":["Spring Cloud框架"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FProjectCCNx%2Fccnx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FProjectCCNx%2Fccnx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FProjectCCNx%2Fccnx/lists"}