今天值得紀念,作為技術支援,總算解決了第乙個客戶提出的實際問題。
實在是詭異的問題,為了重現錯誤嘗試了多次,居然無意中發現跟延時有關。
最後解決問題還白白花了2個多小時,linux shell指令碼真的很缺乏互動功能
神清氣爽啊,回來都很晚了
這時有同學求助,工作上一堆問題,女生當然得幫了,時間不夠先挑個軟柿子,就是c語言取得網絡卡工作模式,半工還是全雙工。
這個我很快就想到,要是/proc 、/sys 等下面沒有的話,只能是ioctl 介面了
但是具體是那個ioctl命令就糾結了,lxr.linux.no上不了,手頭沒有原始碼檢視環境,這個只能baidu了
很冷門啊,找到了siocethtool
也可以strace 一下兩個命令
strace ethtool eth0
strace mii-tool -v
但是一些ioctl命令不是所有網絡卡驅動都支援的,所以往往沒跟到siocethtool,這些程式就自己退出了,
很是靠不住
網路裝置沒有裝置節點,fd只要socket就可以獲得了
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
typedef unsigned short u16;
typedef unsigned int u32;
typedef unsigned char u8;
#include
#include
int get_settings(const char* devname)
ecmd.cmd = 1;
ifr.ifr_data = (caddr_t)&ecmd;
if(ioctl(fd, siocethtool, &ifr))
//duplex 0 half 1 full
fprintf(stdout, "settings for %s: speed:%d, duplex:%s\n", devname, ecmd.speed,
ecmd.duplex ? "full" : "half");
close(fd);
return 1;
}int main(int argc, char *argv)
linux 下更改網絡卡工作模式
linux下更改網絡卡工作模式 現在的網絡卡一般都是10 100m自適應工作模式,在配置網絡卡引數時我們很少 考慮到它的工作模式,但在路由器和交換機 伺服器等通訊量比較大的 關鍵裝置上,我們應該為它指定正確的工作模式,這樣可以提高通訊效率。在linux環境下,們可以使用系統自帶的命令或工具實現,下面...
網絡卡工作模式 混雜模式
網絡卡工作模式有4種,分別是 廣播 broadcast 模式 多播 multicast 模式 單播模式 unicast 混雜模式 promiscuous 在混雜模式下的網絡卡能夠接收一切通過它的資料,而不管該資料目的位址是否是它。如果通過程式將網絡卡的工作模式設定為 混雜模式 那麼網絡卡將接受所有流...
網絡卡的工作模式
乙太網 ethernet 具有共享介質的特徵,資訊是以明文的形式在網路上傳輸,當網路介面卡設定為監聽模式 混雜模式,promiscuous 時,由於採用乙太網廣播通道爭用的方式,使得監聽系統與正常通訊的網路能夠併聯連線,並可以捕獲任何乙個在同一衝突域上傳輸的資料報。ieee802.3 標準的乙太網採...