linux 下網路程式設計結構體定義對應的標頭檔案
netinet/if_ether.h ether_arp的資料結構
netinet/ether.h 以太禎的網路位元組和ascii位元組的轉換,包括ether_ntoa(),ether_aton這樣的函式定義
netinet/ip.h 這個標頭檔案和linux/ip.h似乎很相似,也有iphdr的資料結構,同時還包括了timestamp結構,我的理解是,linux資料夾下的 ip.h是linux黑客編寫的ip標頭檔案,而這個則是gnu一開始就定義的標頭檔案,同時還包括了bsd中的ipheader結構定義。同理的還有該目錄 下的tcp.h等檔案
linux/ip.h iphdr的資料結構,以及一些ip層的資料定義,同理的還有tcp.h,udp.h等等
linux/if.h 主要的socket標頭檔案,似乎修改自unix的if.h,定義了網絡卡的介面資訊的巨集,例如IFF_UP.另外有數個重要的interface的資料結構定義,包括ifreq,ifconf,ifmap
linux/if_packet.h 原始資料包的資料結構定義,包括sockaddr_pkt,sockaddr_ll,想接收原始資料包的不能錯過這個檔案。同理的還有if_ppp.h,if_tun.h等等
netinet/in.h 這個檔案作的事情就多了。埠巨集定義,著名ip(比如loopback),結構sockaddr_in,網路位元組轉換(ntoh,hton。。。。)。。。反正太多了,沒事的話就把這個檔案加到標頭檔案包含裡吧
netdb.h 檔案如其名,包括結構hostent(主機環境),獲得主機的資訊的幾個函式(gethostbyname)。似乎這個就是定義主機的各項環境,例如hostname等等
net/bpf.h berkeley的資料包過濾標頭檔案,想用bpf進行包過濾的要重視一下這個檔案
net/ethernet.h 包括幾個乙太網的資料結構,ether_addr(mac幀結構),ether_header(以太幀的頭部)
-------------------------------
<sys/types.h> //primitive system data types(包含很多型別重定義,如pid_t、int8_t等)
<sys/socket.h> //與套接字相關的函式宣告和結構體定義,如socket()、bind()、connect()及struct sockaddr的定義等
<sys/ioctl.h> //I/O控制操作相關的函式宣告,如ioctl()
<stdlib.h> //某些結構體定義和巨集定義,如EXIT_FAILURE、EXIT_SUCCESS等
<netdb.h> //某些結構體定義、巨集定義和函式宣告,如struct hostent、struct servent、gethostbyname()、gethostbyaddr()、herror()等
<arpa/inet.h> //某些函式宣告,如inet_ntop()、inet_ntoa()等
<netinet/in.h> //某些結構體宣告、巨集定義,如struct sockaddr_in、PROTO_ICMP、INADDR_ANY等
------------------------------
linux下socket編寫常用標頭檔案
#include <sys/socket.h> //connect,send,recv,setsockopt等
#include <sys/types.h>
#include <netinet/in.h> // sockaddr_in, "man 7 ip" ,htons
#include <poll.h> //poll,pollfd
#include <arpa/inet.h> //inet_addr,inet_aton
#include <unistd.h> //read,write
#include <netdb.h> //gethostbyname
#include <error.h> //perror
#include <stdio.h>
#include <errno.h> //errno
#include <string.h> // memset
#include <string>
#include <iostream>
相關推薦
linux 下網路程式設計結構體定義對應的標頭檔案
netinet/if_ether.h ether_arp的資料結構 netinet/ether.h 以太禎的網路位元組和ascii位元組的轉換,包括ether_ntoa(),ether_aton這樣的函式定義 netinet/ip.h 這個標頭檔案和linux/ip.h似乎很相似,也有iphd
Linux下網路相關結構體 struct addrinfo
一、簡介 結構體定義如下: struct addrinfo { int ai_flags; /* Input flags. */ int ai_family; /* Protoc
Linux下網路程式設計之自定義協議進行併發多客戶端與伺服器的通訊(多程序處理併發)不足佔用資源太多
自定義協議訊息體*********msg.h*************#ifndef _MSG_H_#define _MSG_H_struct msg{ char head[10]; //頭部 char msg_chck; //效驗碼 char buff[512];/
Unix——《Unix網路程式設計》配置unp.h標頭檔案
《Unix網路程式設計 卷1》unp.h 標頭檔案及其編譯問題 本書原始碼下載地址 http://www.unpbook.com 解壓tar -zxvf unpv13e.tar.gz 其實各個編譯過程都在README中,下面給出正確的編譯過程 首
解決Linux下網路程式設計(sendto send )出現 SIGPIPE 訊號導致程式異常終止的問題
引言 最近在Linux下網路程式設計時,出現SIGPIPE 訊號導致程式異常終止,本文記錄下解決的方法以及相應的知識。 SIGPIPE 訊號資料 什麼時候出現此訊號,APUE中有關此訊號的解釋如下: Linux man手冊有關此訊號的解釋: man 7 signal SI
UNIX網路程式設計-結構體和相關函式
IPv4結構體 除非涉及路由套接字,否則不用設定和檢查 sin_len 欄位 POSIX規範只要求結構中的3個欄位,sin_family,sin_addr,sin_port sin_family對應的是 sa_family_t sin_port 對應的是 in_
Linux下的FILE*結構體
FILE*結構體解析 struct file結構體定義在include/Linux/fs.h中定義。檔案結構體代表一個開啟的檔案,系統中的每個開啟的檔案在核心空間都有一個關聯的 struct file。它由核心在開啟檔案時建立,並傳遞給在檔案上進行操作的任何函式。在檔案的
總結之linux下網路程式設計
1.有一篇好的文章,對Linux下socket程式設計的原理和要點說的很清楚: 2.一些windows網路程式設計的要點吧。包括大頭序,小頭序,網路位元組序。一些常用的函式等。。 3.《linux網路程式設計》宋斌寫的,這本書不錯。寫的清楚,容易懂。是一個比較好的參
linux下網路程式設計
Linux的SOCKET程式設計詳解 1. 網路中程序之間如何通訊 進 程通訊的概念最初來源於單機系統。由於每個程序都在自己的地址範圍內執行,為保證兩個相互通訊的進 程之間既互不干擾又協調一致工作,作業系統為程序通訊提供了相應設施,如 UNIX
Linux常見協議型別結構體定義
以太頭: #include <linux/if_inet.h> struct ethhdr { unsigned char h_dest[ETH_ALEN]; /* destination eth addr */ unsigne
(筆記)Linux下網路程式設計,採用TCP協議實現的C/S架構
TCP/UDP介紹 TCP(Transfer Control Protocol)傳輸控制協議是一種面向連線的協議, 當我們的網路程式使用這個協議的時候,可以保證我們的客戶端和服務端的通訊是可靠的,安全的,適合於傳輸大批量資料的情況. UDP(User Da
《OpenCV3程式設計入門》——“opencv.hpp” 標頭檔案認知
# include <opencv2/opencv.hpp>標頭檔案定義類似如下: # include <opencv2/opencv.hpp> # ifndef_OPENCV_ALL_HPP_ #define_OPENCV_ALL_HPP_
ubuntu下找不到sys/time.h標頭檔案(沒有/usr/include/sys目錄)
今天編譯一個工程,編譯器報錯sys/time.h標頭檔案找不到~ 開啟目錄/usr/include看了一下,發現下面根本沒有sys目錄 實際上不是沒有sys目錄,只是系統給換路徑了 32位系統:/usr/incude/i386-linux-gnu/sys 64位系統:/usr/inc
c語言陣列、結構、原始檔、標頭檔案
簡單的說其實要理解C檔案與標頭檔案(即.h)有什麼不同之處,首先需要弄明白編譯器的工作過程,一般說來編譯器會做以下幾個過程: 1.預處理階段 2.詞法與語法分析階段 3.編譯階段,首先編譯成純彙編語句,再將之彙編成跟CPU相關的二進位制碼,生成各個目標檔案 (.obj檔案)
Linux之如何在centos上安裝核心標頭檔案
CentOS直接用yum install kernel-headers。 但是安裝前,先檢視一下當前使用的核心版本,可以使用uname -r來檢視當前核心版本。 使用yum list | grep
Eclipse下配置javah.exe自動生成jni標頭檔案
最近專案中需要用到JNI來進行java和c++之間的互動,去命令列呼叫javah.exe命令生成jni標頭檔案的方法比較麻煩,可以通過配置Eclipse來解決這個問題,配置方法如下: 1、首先確保你的環境配置沒有問題(我想既然都開始用JNI了因該不會有問題吧!
防止變數重複定義、標頭檔案重複包含、巢狀包含
【轉自】 http://hi.baidu.com/zengzhaonong/blog/item/8a8871062d481f7f03088106.html #include檔案的一個不利之處在於一個頭檔案可能會被多次包含,為了說明這種錯誤,考慮下面的程式碼: #include "x.h"#include "
習題 8.5 將本章的例8.4改寫為一個多檔案的程式:1.將類定義放在標頭檔案arraymax.h中;2.將成員函式定義放在原始檔arraymax.cpp中;3.主函式放在原始檔file1.cpp中。
C++程式設計(第三版) 譚浩強 習題8.5 個人設計 習題 8.5 將本章的例8.4改寫為一個多檔案的程式: 1.將類定義放在標頭檔案arraymax.h中; 2.將成員函式定義放在
如何獲得gcc/g++編譯巨集定義和標頭檔案搜尋目錄的方法說明
/* co-gcc.lnt: This is the seed file for configuring Lint for use with GCC versions 2.95.3 and later. Like all compiler options files thi
ubuntu下整合eclipse和javah生成jni標頭檔案開發android的native程式
本文介紹兩種利用javah命令生成jni標頭檔案的方法,第一種為大眾所知的javah命令,第二種為整合javah到eclipse裡面。推薦第二種方式,方便快捷,隨時修改隨時生成 0:前提和條件: 1:ubuntu64位系統 2:android-ndk-r8e已經安