blob: f60590136a0bc1e798a7962e17d2eed22130056a [file] [log] [blame]
---
layout: default
version: 0.5-beta
---
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 8.6.5" />
<title>nanocat(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */
/* Default font. */
body {
font-family: Georgia,serif;
}
/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
font-family: Arial,Helvetica,sans-serif;
}
body {
margin: 1em 5% 1em 5%;
}
a {
color: blue;
text-decoration: underline;
}
a:visited {
color: fuchsia;
}
em {
font-style: italic;
color: navy;
}
strong {
font-weight: bold;
color: #083194;
}
h1, h2, h3, h4, h5, h6 {
color: #527bbd;
margin-top: 1.2em;
margin-bottom: 0.5em;
line-height: 1.3;
}
h1, h2, h3 {
border-bottom: 2px solid silver;
}
h2 {
padding-top: 0.5em;
}
h3 {
float: left;
}
h3 + * {
clear: left;
}
h5 {
font-size: 1.0em;
}
div.sectionbody {
margin-left: 0;
}
hr {
border: 1px solid silver;
}
p {
margin-top: 0.5em;
margin-bottom: 0.5em;
}
ul, ol, li > p {
margin-top: 0;
}
ul > li { color: #aaa; }
ul > li > * { color: black; }
pre {
padding: 0;
margin: 0;
}
#author {
color: #527bbd;
font-weight: bold;
font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}
#footer {
font-size: small;
border-top: 2px solid silver;
padding-top: 0.5em;
margin-top: 4.0em;
}
#footer-text {
float: left;
padding-bottom: 0.5em;
}
#footer-badges {
float: right;
padding-bottom: 0.5em;
}
#preamble {
margin-top: 1.5em;
margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
margin-top: 1.0em;
margin-bottom: 1.5em;
}
div.admonitionblock {
margin-top: 2.0em;
margin-bottom: 2.0em;
margin-right: 10%;
color: #606060;
}
div.content { /* Block element content. */
padding: 0;
}
/* Block element titles. */
div.title, caption.title {
color: #527bbd;
font-weight: bold;
text-align: left;
margin-top: 1.0em;
margin-bottom: 0.5em;
}
div.title + * {
margin-top: 0;
}
td div.title:first-child {
margin-top: 0.0em;
}
div.content div.title:first-child {
margin-top: 0.0em;
}
div.content + div.title {
margin-top: 0.0em;
}
div.sidebarblock > div.content {
background: #ffffee;
border: 1px solid #dddddd;
border-left: 4px solid #f0f0f0;
padding: 0.5em;
}
div.listingblock > div.content {
border: 1px solid #dddddd;
border-left: 5px solid #f0f0f0;
background: #f8f8f8;
padding: 0.5em;
}
div.quoteblock, div.verseblock {
padding-left: 1.0em;
margin-left: 1.0em;
margin-right: 10%;
border-left: 5px solid #f0f0f0;
color: #777777;
}
div.quoteblock > div.attribution {
padding-top: 0.5em;
text-align: right;
}
div.verseblock > pre.content {
font-family: inherit;
font-size: inherit;
}
div.verseblock > div.attribution {
padding-top: 0.75em;
text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
text-align: left;
}
div.admonitionblock .icon {
vertical-align: top;
font-size: 1.1em;
font-weight: bold;
text-decoration: underline;
color: #527bbd;
padding-right: 0.5em;
}
div.admonitionblock td.content {
padding-left: 0.5em;
border-left: 3px solid #dddddd;
}
div.exampleblock > div.content {
border-left: 3px solid #dddddd;
padding-left: 0.5em;
}
div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; }
a.image:visited { color: white; }
dl {
margin-top: 0.8em;
margin-bottom: 0.8em;
}
dt {
margin-top: 0.5em;
margin-bottom: 0;
font-style: normal;
color: navy;
}
dd > *:first-child {
margin-top: 0.1em;
}
ul, ol {
list-style-position: outside;
}
ol.arabic {
list-style-type: decimal;
}
ol.loweralpha {
list-style-type: lower-alpha;
}
ol.upperalpha {
list-style-type: upper-alpha;
}
ol.lowerroman {
list-style-type: lower-roman;
}
ol.upperroman {
list-style-type: upper-roman;
}
div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
margin-top: 0.1em;
margin-bottom: 0.1em;
}
tfoot {
font-weight: bold;
}
td > div.verse {
white-space: pre;
}
div.hdlist {
margin-top: 0.8em;
margin-bottom: 0.8em;
}
div.hdlist tr {
padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
font-weight: bold;
}
td.hdlist1 {
vertical-align: top;
font-style: normal;
padding-right: 0.8em;
color: navy;
}
td.hdlist2 {
vertical-align: top;
}
div.hdlist.compact tr {
margin: 0;
padding-bottom: 0;
}
.comment {
background: yellow;
}
.footnote, .footnoteref {
font-size: 0.8em;
}
span.footnote, span.footnoteref {
vertical-align: super;
}
#footnotes {
margin: 20px 0 20px 0;
padding: 7px 0 0 0;
}
#footnotes div.footnote {
margin: 0 0 5px 0;
}
#footnotes hr {
border: none;
border-top: 1px solid silver;
height: 1px;
text-align: left;
margin-left: 0;
width: 20%;
min-width: 100px;
}
div.colist td {
padding-right: 0.5em;
padding-bottom: 0.3em;
vertical-align: top;
}
div.colist td img {
margin-top: 0.3em;
}
@media print {
#footer-badges { display: none; }
}
#toc {
margin-bottom: 2.5em;
}
#toctitle {
color: #527bbd;
font-size: 1.1em;
font-weight: bold;
margin-top: 1.0em;
margin-bottom: 0.1em;
}
div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
margin-top: 0;
margin-bottom: 0;
}
div.toclevel2 {
margin-left: 2em;
font-size: 0.9em;
}
div.toclevel3 {
margin-left: 4em;
font-size: 0.9em;
}
div.toclevel4 {
margin-left: 6em;
font-size: 0.9em;
}
span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }
span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }
span.big { font-size: 2em; }
span.small { font-size: 0.6em; }
span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }
/*
* xhtml11 specific
*
* */
tt {
font-family: monospace;
font-size: inherit;
color: navy;
}
div.tableblock {
margin-top: 1.0em;
margin-bottom: 1.5em;
}
div.tableblock > table {
border: 3px solid #527bbd;
}
thead, p.table.header {
font-weight: bold;
color: #527bbd;
}
p.table {
margin-top: 0;
}
/* Because the table frame attribute is overriden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
border-style: none;
}
div.tableblock > table[frame="hsides"] {
border-left-style: none;
border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
border-top-style: none;
border-bottom-style: none;
}
/*
* html5 specific
*
* */
.monospaced {
font-family: monospace;
font-size: inherit;
color: navy;
}
table.tableblock {
margin-top: 1.0em;
margin-bottom: 1.5em;
}
thead, p.tableblock.header {
font-weight: bold;
color: #527bbd;
}
p.tableblock {
margin-top: 0;
}
table.tableblock {
border-width: 3px;
border-spacing: 0px;
border-style: solid;
border-color: #527bbd;
border-collapse: collapse;
}
th.tableblock, td.tableblock {
border-width: 1px;
padding: 4px;
border-style: solid;
border-color: #527bbd;
}
table.tableblock.frame-topbot {
border-left-style: hidden;
border-right-style: hidden;
}
table.tableblock.frame-sides {
border-top-style: hidden;
border-bottom-style: hidden;
}
table.tableblock.frame-none {
border-style: hidden;
}
th.tableblock.halign-left, td.tableblock.halign-left {
text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
text-align: right;
}
th.tableblock.valign-top, td.tableblock.valign-top {
vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
vertical-align: bottom;
}
/* Overrides for manpage documents */
h1 {
padding-top: 0.5em;
padding-bottom: 0.5em;
border-top: 2px solid silver;
border-bottom: 2px solid silver;
}
h2 {
border-style: none;
}
div.sectionbody {
margin-left: 3em;
}
@media print {
div#toc { display: none; }
}
p {font-family:sans-serif;}
h1,h2,h3,h4,h5,h6 {color:#808080;}
a {color:#000000;}
a:visited {color:#000000;}
dt {color:#000000; font-style: italic;}
tt {color: #000000;}
em {color: #000000;}
strong {color: #000000; font-weight: bold;}
</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = { // Namespace.
/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////
/* Author: Mihai Bazon, September 2002
* http://students.infoiasi.ro/~mishoo
*
* Table Of Content generator
* Version: 0.4
*
* Feel free to use this script under the terms of the GNU General Public
* License, as long as you do not remove or alter this notice.
*/
/* modified by Troy D. Hanson, September 2006. License: GPL */
/* modified by Stuart Rackham, 2006, 2009. License: GPL */
// toclevels = 1..4.
toc: function (toclevels) {
function getText(el) {
var text = "";
for (var i = el.firstChild; i != null; i = i.nextSibling) {
if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
text += i.data;
else if (i.firstChild != null)
text += getText(i);
}
return text;
}
function TocEntry(el, text, toclevel) {
this.element = el;
this.text = text;
this.toclevel = toclevel;
}
function tocEntries(el, toclevels) {
var result = new Array;
var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');
// Function that scans the DOM tree for header elements (the DOM2
// nodeIterator API would be a better technique but not supported by all
// browsers).
var iterate = function (el) {
for (var i = el.firstChild; i != null; i = i.nextSibling) {
if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
var mo = re.exec(i.tagName);
if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
}
iterate(i);
}
}
}
iterate(el);
return result;
}
var toc = document.getElementById("toc");
if (!toc) {
return;
}
// Delete existing TOC entries in case we're reloading the TOC.
var tocEntriesToRemove = [];
var i;
for (i = 0; i < toc.childNodes.length; i++) {
var entry = toc.childNodes[i];
if (entry.nodeName == 'DIV'
&& entry.getAttribute("class")
&& entry.getAttribute("class").match(/^toclevel/))
tocEntriesToRemove.push(entry);
}
for (i = 0; i < tocEntriesToRemove.length; i++) {
toc.removeChild(tocEntriesToRemove[i]);
}
// Rebuild TOC entries.
var entries = tocEntries(document.getElementById("content"), toclevels);
for (var i = 0; i < entries.length; ++i) {
var entry = entries[i];
if (entry.element.id == "")
entry.element.id = "_toc_" + i;
var a = document.createElement("a");
a.href = "#" + entry.element.id;
a.appendChild(document.createTextNode(entry.text));
var div = document.createElement("div");
div.appendChild(a);
div.className = "toclevel" + entry.toclevel;
toc.appendChild(div);
}
if (entries.length == 0)
toc.parentNode.removeChild(toc);
},
/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////
/* Based on footnote generation code from:
* http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
*/
footnotes: function () {
// Delete existing footnote entries in case we're reloading the footnodes.
var i;
var noteholder = document.getElementById("footnotes");
if (!noteholder) {
return;
}
var entriesToRemove = [];
for (i = 0; i < noteholder.childNodes.length; i++) {
var entry = noteholder.childNodes[i];
if (entry.nodeName == 'DIV' && entry.getAttribute("class") == "footnote")
entriesToRemove.push(entry);
}
for (i = 0; i < entriesToRemove.length; i++) {
noteholder.removeChild(entriesToRemove[i]);
}
// Rebuild footnote entries.
var cont = document.getElementById("content");
var spans = cont.getElementsByTagName("span");
var refs = {};
var n = 0;
for (i=0; i<spans.length; i++) {
if (spans[i].className == "footnote") {
n++;
var note = spans[i].getAttribute("data-note");
if (!note) {
// Use [\s\S] in place of . so multi-line matches work.
// Because JavaScript has no s (dotall) regex flag.
note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
spans[i].innerHTML =
"[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
"' title='View footnote' class='footnote'>" + n + "</a>]";
spans[i].setAttribute("data-note", note);
}
noteholder.innerHTML +=
"<div class='footnote' id='_footnote_" + n + "'>" +
"<a href='#_footnoteref_" + n + "' title='Return to text'>" +
n + "</a>. " + note + "</div>";
var id =spans[i].getAttribute("id");
if (id != null) refs["#"+id] = n;
}
}
if (n == 0)
noteholder.parentNode.removeChild(noteholder);
else {
// Process footnoterefs.
for (i=0; i<spans.length; i++) {
if (spans[i].className == "footnoteref") {
var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
href = href.match(/#.*/)[0]; // Because IE return full URL.
n = refs[href];
spans[i].innerHTML =
"[<a href='#_footnote_" + n +
"' title='View footnote' class='footnote'>" + n + "</a>]";
}
}
}
},
install: function(toclevels) {
var timerId;
function reinstall() {
asciidoc.footnotes();
if (toclevels) {
asciidoc.toc(toclevels);
}
}
function reinstallAndRemoveTimer() {
clearInterval(timerId);
reinstall();
}
timerId = setInterval(reinstall, 500);
if (document.addEventListener)
document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
else
window.onload = reinstallAndRemoveTimer;
}
}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
nanocat(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>nanocat -
a command-line interface to nanomsg
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="literalblock">
<div class="content">
<pre><tt>nanocat --req {--connect ADDR|--bind ADDR} {--data DATA|--file PATH} [-i SEC] [-AQ]
nanocat --rep {--connect ADDR|--bind ADDR} {--data DATA|--file PATH} [-AQ]
nanocat --push {--connect ADDR|--bind ADDR} {--data DATA|--file PATH} [-i SEC]
nanocat --pull {--connect ADDR|--bind ADDR} [-AQ]
nanocat --pub {--connect ADDR|--bind ADDR} {--data DATA|--file PATH} [-i SEC]
nanocat --sub {--connect ADDR|--bind ADDR} [--subscribe PREFIX ...] [-AQ]
nanocat --surveyor {--connect ADDR|--bind ADDR} {--data DATA|--file PATH} [-i SEC] [-AQ]
nanocat --respondent {--connect ADDR|--bind ADDR} {--data DATA|--file PATH} [-AQ]
nanocat --bus {--connect ADDR|--bind ADDR} {--data DATA|--file PATH} [-i SEC] [-AQ]
nanocat --pair {--connect ADDR|--bind ADDR} {--data DATA|--file PATH} [-i SEC] [-AQ]</tt></pre>
</div></div>
<div class="paragraph"><p>In the case symlinks are installed:</p></div>
<div class="literalblock">
<div class="content">
<pre><tt>nn_req {--connect ADDR|--bind ADDR} {--data DATA|--file PATH} [-i SEC] [-AQ]
nn_rep {--connect ADDR|--bind ADDR} {--data DATA|--file PATH} [-AQ]
nn_push {--connect ADDR|--bind ADDR} {--data DATA|--file PATH} [-i SEC]
nn_pull {--connect ADDR|--bind ADDR} [-AQ]
nn_pub {--connect ADDR|--bind ADDR} {--data DATA|--file PATH} [-i SEC]
nn_sub {--connect ADDR|--bind ADDR} [--subscribe PREFIX ...] [-AQ]
nn_surveyor {--connect ADDR|--bind ADDR} {--data DATA|--file PATH} [-i SEC] [-AQ]
nn_respondent {--connect ADDR|--bind ADDR} {--data DATA|--file PATH} [-AQ]
nn_bus {--connect ADDR|--bind ADDR} {--data DATA|--file PATH} [-i SEC] [-AQ]
nn_pair {--connect ADDR|--bind ADDR} {--data DATA|--file PATH} [-i SEC] [-AQ]</tt></pre>
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>The nanocat is a command-line tool to send and receive data via nanomsg
sockets. It can be used for debugging purposes, sending files through the
network, health checking the system or whatever else you can think of.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="paragraph"><p>Generic:</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
<strong>--verbose,-v</strong>
</dt>
<dd>
<p>
Increase verbosity of the nanocat
</p>
</dd>
<dt class="hdlist1">
<strong>--silent,-q</strong>
</dt>
<dd>
<p>
Decrease verbosity of the nanocat
</p>
</dd>
<dt class="hdlist1">
<strong>--help,-h</strong>
</dt>
<dd>
<p>
This help text
</p>
</dd>
</dl></div>
<div class="paragraph"><p>Socket Types:</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
<strong>--push</strong>
</dt>
<dd>
<p>
Use NN_PUSH socket type
</p>
</dd>
<dt class="hdlist1">
<strong>--pull</strong>
</dt>
<dd>
<p>
Use NN_PULL socket type
</p>
</dd>
<dt class="hdlist1">
<strong>--pub</strong>
</dt>
<dd>
<p>
Use NN_PUB socket type
</p>
</dd>
<dt class="hdlist1">
<strong>--sub</strong>
</dt>
<dd>
<p>
Use NN_SUB socket type
</p>
</dd>
<dt class="hdlist1">
<strong>--req</strong>
</dt>
<dd>
<p>
Use NN_REQ socket type
</p>
</dd>
<dt class="hdlist1">
<strong>--rep</strong>
</dt>
<dd>
<p>
Use NN_REP socket type
</p>
</dd>
<dt class="hdlist1">
<strong>--surveyor</strong>
</dt>
<dd>
<p>
Use NN_SURVEYOR socket type
</p>
</dd>
<dt class="hdlist1">
<strong>--respondent</strong>
</dt>
<dd>
<p>
Use NN_RESPONDENT socket type
</p>
</dd>
<dt class="hdlist1">
<strong>--bus</strong>
</dt>
<dd>
<p>
Use NN_BUS socket type
</p>
</dd>
<dt class="hdlist1">
<strong>--pair</strong>
</dt>
<dd>
<p>
Use NN_PAIR socket type
</p>
</dd>
</dl></div>
<div class="paragraph"><p>Socket Options:</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
<strong>--bind</strong> <em>ADDR</em>
</dt>
<dd>
<p>
Bind socket to the address ADDR
</p>
</dd>
<dt class="hdlist1">
<strong>--connect</strong> <em>ADDR</em>
</dt>
<dd>
<p>
Connect socket to the address ADDR
</p>
</dd>
<dt class="hdlist1">
<strong>--bind-ipc,-X</strong> <em>PATH</em>
</dt>
<dd>
<p>
Bind socket to the ipc address "ipc://PATH".
</p>
</dd>
<dt class="hdlist1">
<strong>--connect-ipc,-x</strong> <em>PATH</em>
</dt>
<dd>
<p>
Connect socket to the ipc address "ipc://PATH".
</p>
</dd>
<dt class="hdlist1">
<strong>--bind-local,-L</strong> <em>PORT</em>
</dt>
<dd>
<p>
Bind socket to the tcp address "tcp://127.0.0.1:PORT".
</p>
</dd>
<dt class="hdlist1">
<strong>--connect-local,-l</strong> <em>PORT</em>
</dt>
<dd>
<p>
Connect socket to the tcp address "tcp://127.0.0.1:PORT".
</p>
</dd>
<dt class="hdlist1">
<strong>--recv-timeout</strong> <em>SEC</em>
</dt>
<dd>
<p>
Set timeout for receiving a message
</p>
</dd>
<dt class="hdlist1">
<strong>--send-timeout</strong> <em>SEC</em>
</dt>
<dd>
<p>
Set timeout for sending a message
</p>
</dd>
</dl></div>
<div class="paragraph"><p>SUB Socket Options:</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
<strong>--subscribe</strong> <em>PREFIX</em>
</dt>
<dd>
<p>
Subscribe to the prefix PREFIX. Note: socket will be
subscribed to everything (empty prefix) if no prefixes
are specified on the command-line.
</p>
</dd>
</dl></div>
<div class="paragraph"><p>Input Options:</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
<strong>--format</strong> <em>FORMAT</em>
</dt>
<dd>
<p>
Use echo format FORMAT (same as the options below)
</p>
</dd>
<dt class="hdlist1">
<strong>--raw</strong>
</dt>
<dd>
<p>
Dump message as is (Note: no delimiters are printed)
</p>
</dd>
<dt class="hdlist1">
<strong>--ascii,-A</strong>
</dt>
<dd>
<p>
Print ASCII part of message delimited by newline. All
non-ascii characters replaced by dot.
</p>
</dd>
<dt class="hdlist1">
<strong>--quoted,-Q</strong>
</dt>
<dd>
<p>
Print each message on separate line in double quotes
with C-like character escaping
</p>
</dd>
<dt class="hdlist1">
<strong>--msgpack</strong>
</dt>
<dd>
<p>
Print each message as msgpacked string (raw type). This
is useful for programmatic parsing.
</p>
</dd>
</dl></div>
<div class="paragraph"><p>Output Options:</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
<strong>--interval,-i</strong> <em>SEC</em>
</dt>
<dd>
<p>
Send message (or request) every SEC seconds
</p>
</dd>
<dt class="hdlist1">
<strong>--delay,-d</strong> <em>SEC</em>
</dt>
<dd>
<p>
Wait for SEC seconds before sending message (useful for one-shot
PUB sockets)
</p>
</dd>
<dt class="hdlist1">
<strong>--data,-D</strong> <em>DATA</em>
</dt>
<dd>
<p>
Send DATA to the socket and quit for PUB, PUSH, PAIR,
BUS socket. Use DATA to reply for REP or RESPONDENT
socket. Send DATA as request for REQ or SURVEYOR socket.
</p>
</dd>
<dt class="hdlist1">
<strong>--file,-F</strong> <em>PATH</em>
</dt>
<dd>
<p>
Same as --data but get data from file PATH
</p>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>The ping-pong with nn_req/nn_rep sockets (must be run simultaneously):</p></div>
<div class="literalblock">
<div class="content">
<pre><tt>nanocat --rep --bind tcp://127.0.0.1:1234 --data pong --format ascii
nanocat --req --connect tcp://127.0.0.1:1234 --data ping --format ascii</tt></pre>
</div></div>
<div class="paragraph"><p>Or in shorter to write form:</p></div>
<div class="literalblock">
<div class="content">
<pre><tt>nn_rep -L1234 -Dpong -A
nn_req -l1234 -Dping -A</tt></pre>
</div></div>
<div class="paragraph"><p>Do periodic requests once a second:</p></div>
<div class="literalblock">
<div class="content">
<pre><tt>nn_req -l1234 -Dping -A -i 1</tt></pre>
</div></div>
<div class="paragraph"><p>The rep socket that never reply (no -D option), may be used to check if
resending the requests is actually work:</p></div>
<div class="literalblock">
<div class="content">
<pre><tt>nanocat --rep --connect ipc:///var/run/app/req.socket</tt></pre>
</div></div>
<div class="paragraph"><p>Send an output of the ls to whatever would connect to 127.0.0.1:1234 then exit:</p></div>
<div class="literalblock">
<div class="content">
<pre><tt>ls | nanocat --push -L1234 -F-</tt></pre>
</div></div>
<div class="paragraph"><p>Send heartbeats to imaginary monitoring service:</p></div>
<div class="literalblock">
<div class="content">
<pre><tt>nanocat --pub --connect tpc://monitoring.example.org -D"I am alive!" --interval 10</tt></pre>
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_see_also">SEE ALSO</h2>
<div class="sectionbody">
<div class="paragraph"><p><a href="nanomsg.7.html">nanomsg(7)</a></p></div>
</div>
</div>
<div class="sect1">
<h2 id="_authors">AUTHORS</h2>
<div class="sectionbody">
<div class="paragraph"><p>Paul Colomiets &lt;<a href="mailto:paul@colomiets.name">paul@colomiets.name</a>&gt;</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
nanomsg 0.5-beta<br />
Last updated 2014-11-14 22:43:29 CET
</div>
</div>
</body>
</html>