最新消息:

Linux Socket 学习笔记22-带外数据2

C/C++ admin 3153浏览 0评论

如果要使用这种模式,那么要设置SO_OOBINLINE套接口选项:
srtsocket(s,SOL_SOCKET,SO_OOBINLINE,&oobinline,sizeof(oobinline));

既然带内数据在普通数据中间,那么怎么知道具体在哪呢,这就需要用函数ioctl(2)确定紧急指针的位置。

1
2
3
4
5
6
7
<span style="color: #339933;">#include&lt;sys/ioctl.h&gt;</span>

<span style="color: #993333;">int</span> flag<span style="color: #339933;">;</span><span style="color: #666666; font-style: italic;">//如果被标记则为TRUE</span>

z<span style="color: #339933;">=</span>ioctl<span style="color: #009900;">(</span>s<span style="color: #339933;">,</span>SIOCATMARK<span style="color: #339933;">,&amp;</span>amp<span style="color: #339933;">;</span>flag<span style="color: #009900;">)</span><span style="color: #339933;">;</span>

<span style="color: #666666; font-style: italic;">//成功返回0</span>

下面是内嵌带内数据的主要代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
z<span style="color: #339933;">=</span>srtsocket<span style="color: #009900;">(</span>s<span style="color: #339933;">,</span>

SOL_SOCKET<span style="color: #339933;">,</span>

SO_OOBINLINE<span style="color: #339933;">,</span>

<span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>oobinline<span style="color: #339933;">,</span>

<span style="color: #993333;">sizeof</span><span style="color: #009900;">(</span>oobinline<span style="color: #009900;">)</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>

<span style="color: #b1b100;">for</span><span style="color: #009900;">(</span><span style="color: #339933;">;;</span><span style="color: #009900;">)</span>

<span style="color: #009900;">{</span>

ioctl<span style="color: #009900;">(</span>s<span style="color: #339933;">,</span>SIOCATMARK<span style="color: #339933;">,&amp;</span>amp<span style="color: #339933;">;</span>flag<span style="color: #009900;">)</span><span style="color: #339933;">;</span>

recv<span style="color: #009900;">(</span>s<span style="color: #339933;">,</span>buf<span style="color: #339933;">,</span><span style="color: #993333;">sizeof</span><span style="color: #009900;">(</span>buf<span style="color: #009900;">)</span><span style="color: #339933;">,</span><span style="color: #0000dd;">0</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>

<span style="color: #009900;">}</span>

转载请注明:爱开源 » Linux Socket 学习笔记22-带外数据2

您必须 登录 才能发表评论!