读书人

网络编程有关

发布时间: 2012-11-08 08:48:12 作者: rapoo

网络编程相关

一、三种类型的套接字:

1. 流式套接字(SOCKET_STREAM)
??? 提供面向连接的可靠的数据传输服务。数据被看作是字节流,无长度限制。例如FTP协议就采用这种。
2. 数据报式套接字(SOCKET_DGRAM)
??? 提供无连接的数据传输服务,不保证可靠性。
3. 原始式套接字(SOCKET_RAW)
??? 该接口允许对较低层次协议,如IP,ICMP直接访问。

?

二、基本套接字系统调有有如下一些:
??? 创建套接字:?????? socket()
??? 绑定本机端口:???? bind()
??? 建立连接:???????? connect(),accept()
??? 侦听端口:???????? listen()
??? 数据传输:???????? send(), recv()
??? 输入/输出多路复用:select()
??? 关闭套接字:?????? closesocket()

?

三 数据类型及常用函数

??? Windows平台:

// ether_arp的数据结构#include <netinet/if_ether.h>// 以太祯的网络字节和ascii字节的转换,包括ether_ntoa(),ether_aton等#include <netinet/ether.h>// 这个头文件和linux/ip.h相似,也有iphdr,同时还包括了timestamp结构#include <netinet/ip.h>// 某些结构体声明、宏定义,如struct sockaddr_in、PROTO_ICMP、INADDR_ANY等,// 网络字节转换(ntoh,hton...)#include <netinet/in.h>// Berkeley 的数据包过滤头文件,想用bpf进行包过滤的要重视一下这个文件#include <net/bpf.h>// 包括几个以太网的数据结构,ether_addr(mac帧结构),ether_header(以太帧的头部)#include <net/ethernet.h>// iphdr的数据结构,以及一些ip层的数据定义,同理的还有tcp.h,udp.h等等#include <linux/ip.h>// 主要的socket头文件,定义了网卡的接口信息的宏,例如IFF_UP 。// 另外有数个重要的interface的数据结构定义,包括ifreq,ifconf,ifmap#include <linux/if.h>// 原始数据包的数据结构定义,包括sockaddr_pkt,sockaddr_ll#include <linux/if_packet.h>// 与套接字相关的函数声明和结构体定义,如socket()、bind()、connect()及struct sockaddr的定义等#include <sys/types.h>#include <sys/socket.h>// I/O控制操作相关的函数声明,如ioctl()#include <sys/ioctl.h>// 某些结构体定义、宏定义和函数声明,如struct hostent、struct servent、// gethostbyname()、gethostbyaddr()、herror()等#include <netdb.h>// 某些函数声明,如inet_ntop()、inet_ntoa()、inet_aton()、inet_addr()等#include <arpa/inet.h>// poll,pollfd#include <poll.h>// read,write#include <unistd.h>// perror#include <error.h>#include <stdio.h>#include <errno.h>// 某些结构体定义和宏定义,如EXIT_FAILURE、EXIT_SUCCESS等#include <stdlib.h>// memset#include <string.h>#include <string>#include <iostream>
?

?

读书人网 >编程

热点推荐