<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Linux Forum &mdash; Использование mmap() для получения/отправки через сокет]]></title>
		<link>https://linuxforum.ru/viewtopic.php?id=22677</link>
		<atom:link href="https://linuxforum.ru/extern.php?action=feed&amp;tid=22677&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Использование mmap() для получения/отправки через сокет».]]></description>
		<lastBuildDate>Thu, 07 Jun 2012 11:31:47 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Использование mmap() для получения/отправки через сокет]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=280366#p280366</link>
			<description><![CDATA[<p>Есть сокет <br /></p><div class="codebox"><pre><code>fd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL))</code></pre></div><p>.<br />Предполагается сделать setsockopt с параметрами PACKET_TX_RING/PACKET_RX_RING, затем сделать mmap<br /></p><div class="codebox"><pre><code>rings = mmap(NULL, size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0)</code></pre></div><p> и писать в память напрямую, без использования write/recvfrom.</p><p>Как это реализуется? Точнее, как это работает? - Что выделяет в памяти setsockopt(..,..,PACKET_TX_RING,..,..)? Что делает mmap, если у сокета установлены оба PACKET_TX_RING и PACKET_RX_RING?<br />Например, читать таким образом пакеты (PACKET_RX_RING) я научился, а и читать и писать - нет. Можно ли это сделать на одном сокете, или надо два? Сколько вызовов mmap нужно сделать - один или два, или по одному на оба сокета?.. Как работать с одним кольцом, если в нем и tx пакеты, и rx пакеты? Возможно ли писать в память+recvfrom или write+читать из памяти?<br />Внятной документации о том, как это работает, не нашел (плохо искал?)</p><p>Заранее прошу прощения за сбивчивое объяснение задачи..</p>]]></description>
			<author><![CDATA[null@example.com (jeti)]]></author>
			<pubDate>Thu, 07 Jun 2012 11:31:47 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=280366#p280366</guid>
		</item>
	</channel>
</rss>
