1. 程式人生 > >linux 下網路程式設計結構體定義對應的標頭檔案

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已經安