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協...