ioctl在socket中的一些用法及示例

2021-06-28 16:32:03 字數 2973 閱讀 3013

ioctl在socket中的一些用法及示例

函式 : ioctl(int fd, int request, void * arg)

定義 :

功能 : 控制i/o裝置, 提供了一種獲得裝置資訊和向裝置傳送控制引數的手段.

引數 : int  fd      檔案控制代碼. 用於socket時, 是socket套接字.

int  request 函式定義的所有操作. 關於socket的操作, 定義在檔案中.

void *arg    指標的型別依賴於request引數.

以下**從網上收集了request - arg指標型別的對應關係類別

request 說明

資料型別

siocatmark

siocspgrp

siocgpgrp

是否位於帶外標記

設定套介面的程序id 或程序組id

獲取套介面的程序id 或程序組id

int

int

int

fionbin

fioasync

fionread

fiosetown

fiogetown

設定/ 清除非阻塞i/o 標誌

設定/ 清除訊號驅動非同步i/o 標誌

獲取接收快取區中的位元組數

設定檔案的程序id 或程序組id

獲取檔案的程序id 或程序組id

int

int

int

int

int

siocgifconf

siocsifaddr

siocgifaddr

siocsifflags

siocgifflags

siocsifdstaddr

siocgifdstaddr

siocgifbrdaddr

siocsifbrdaddr

siocgifnetmask

siocsifnetmask

siocgifmetric

siocsifmetric

siocgifmtu

sioc***

獲取所有介面的清單

設定介面位址

獲取介面位址

設定介面標誌

獲取介面標誌

設定點到點位址

獲取點到點位址

獲取廣播位址

設定廣播位址

獲取子網掩碼

設定子網掩碼

獲取介面的測度

設定介面的測度

獲取介面mtu

(還有很多取決於系統的實現)

struct ifconf

struct ifreq

struct ifreq

struct ifreq

struct ifreq

struct ifreq

struct ifreq

struct ifreq

struct ifreq

struct ifreq

struct ifreq

struct ifreq

struct ifreq

struct ifreq

arp

siocsarp

siocgarp

siocdarp

建立/ 修改arp 表項

獲取arp 表項

刪除arp 表項

struct arpreq

struct arpreq

struct arpreq

siocaddrt

siocdelrt

增加路徑

刪除路徑

struct rtentry

struct rtentry

i_***

socket最常用到的結構體: struct ifreq 定義在.(包括struct ifconf/ifr_flags等的定義

)一、獲取

以下例程通過ioctl獲取裝置"eth0"的ip/掩碼/硬體址

#include "stdio.h"

#include "stdlib.h"

#include "string.h"

#include "net/if.h"

#include "arpa/inet.h"

#include "linux/sockios.h"

int main(

int argc,char *argv)

二、設定

以下例程設定eth0的ip位址.

#include "stdio.h"

#include "stdlib.h"

#include "string.h"

#include "net/if.h"

#include "arpa/inet.h"

#include "linux/sockios.h"

int main(

int argc,char *argv)

遮蔽的**用於設定ip後, 啟用新設定. 多數系統不需要這步操作.

而且這步僅作演示. 真實使用的時候, 至少應該

1. 獲取當前ifr.ifr_flags

2. ifr.ifr_flags |= iff_up;

以上是ioctl的一些示例, 實戰中靈活使用、舉一反三.

ioctl在socket中的一些用法及示例

ioctl在socket中的一些用法及示例 ioctl在socket中的一些用法及示例 函式 ioctl int fd,int request,void arg 定義 功能 控制i o裝置,提供了一種獲得裝置資訊和向裝置傳送控制引數的手段.引數 int fd 檔案控制代碼.用於socket時,是so...

ioctl在socket中的一些用法及示例

ioctl在socket中的一些用法及示例 函式 ioctl int fd,int request,void arg 定義 功能 控制i o裝置,提供了一種獲得裝置資訊和向裝置傳送控制引數的手段.引數 int fd 檔案控制代碼.用於socket時,是socket套接字.int request 函式...

socket網路程式設計中的ioctl 函式

網上關於socket網路程式設計中的ioctl 函式的資料整理收集。此部落格作為自己的筆記。linux網路程式與核心互動的方法是通過ioctl來實現的,ioctl與網路協議棧進行互動,可得到網路介面的資訊,網絡卡裝置的對映屬性和配置網路介面.並且還能夠檢視,修改,刪除arp快取記憶體的資訊 arp協...