socket编程需要哪些头文件

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

二 基本套接字系统调有有如下一些:
    创建套接字: socket()
    绑定本机端口: bind()
    建立连接: connect(),accept()
    侦听端口: listen()
    数据传输: send(), recv()
    输入/输出多路复用: select()
    关闭套接只:   closesocket()
    
三 数据类型
    struct sockaddr
    {
       unsigned short  sa_family;   //地址族, 一般为AF_INET
       char                  sa_data[14];   //14字节的协议地址
    }

struct sockaddr_in
    {
       short int                     sin_family;   //地址族
       unsigned short int      sin_port;      //端口号
       struct in_addr             in_addr;      //ip地址
       unsigned char             sin_zero[8];  //填充
    }

四 常用函数
    1 socket()
       头文件: 
       #include <sys/types.h>
       #include <sys/socket.h>
       函数原型:
       int socket(int domain, int type, int protocol)
          domain: 协议类型,一般为AF_INET
          type: socket类型
          protocol:用来指定socket所使用的传输协议编号,通常设为0即可

2 bind()
       头文件:
       #include <sys/types.h>
       #include <sys/socket.h>
       函数原型:
       int bind(int sockfd, struct sockaddr *my_addr, int addrlen)
          sockfd: socket描述符
          my_addr:是一个指向包含有本机ip地址和端口号等信息的sockaddr类型的指针
          addrlen:常被设为sizeof(struct sockaddr)

3 connect()
       头文件:
       #include <sys/types.h>  
       #include <sys/socket.h>
       函数原型:
       int connect(int sockfd, struct sockaddr *serv_addr, int addrlen)
           sockfd: 目的服务器的socket描述符
           serv_addr:包含目的机器ip地址和端口号的指针
           addrlen:sizeof(struct sockaddr)

4 listen()
       头文件:
       #include <sys/socket.h>
       函数原型:
       int listen(int sockfd, int backlog);
           sockfd:socket()系统调用返回的socket描述符
           backlog:指定在请求队列中的最大请求数,进入的连接请求将在队列中等待accept()它们。

5 accept()
       头文件:   
       #include <sys/types.h>
       #inlcude <sys/socket.h>
       函数原型:
       int accept(int sockfd, void *addr, int addrlen)
           sockfd:是被监听的socket描述符
           addr:通常是一个指向sockaddr_in变量的指针,该变量用来存放提出连接请求服务的主机的信息
           addrlen:sizeof(struct sockaddr_in)
       
    6 send()
        头文件:
        #include <sys/socket.h>
        函数原型:
        int send(int sockfd, const void *msg, int len, int flags);
           sockfd:用来传输数据的socket描述符
           msg:要发送数据的指针 
           flags: 0
      
    7 recv()
        头文件:
        #include <sys/types.h>
        #include <sys/socket.h>
        函数原型:
        int recv(int sockfd, void *buf, int len, unsigned int flags)
          sockfd:接收数据的socket描述符
          buf:存放数据的缓冲区
          len:缓冲的长度
          flags:0

8 sendto()
       头文件:
       #include <sys/types.h>
       #include <sys/socket.h>
       函数原型:
       int sendto(int sockfd, const void *msg, int len, unsigned int flags, const struct sockaddr *to, int tolen);
        
    
    9 recvfrom()
       头文件:
       #include <sys/types.h>
       #include <sys/socket.h>
       函数原型:
       int recvfrom(int sockfd, void *buf, int len, unsigned int flags, struct sockaddr *from, int fromlen)

10 read() write()
       int read(int fd, char *buf, int len)
       int write(int fd, char *buf, int len)
       
    11 shutdown()
       close(sockfd)
       int shutdown(int sockfd, int how)
-----------------------------------

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>

转自:http://blog.chinaunix.net/space.php?uid=21237130&do=blog&id=159722

socket编程需要哪些头文件

时间: 2024-08-17 17:34:21

socket编程需要哪些头文件的相关文章

arpa/inet.h所引起的Segmentation fault及网络编程常见的头文件

最近在学习Linux网络编程方面的知识,感觉还是有些困难.主要是对协议过程的理解,还有socket的API的理解不够深刻.今天复习编写了一个TCP的服务端和客户端的程序实现client.c从命令行参数中获得一个字符串发给服务器,然后接收服务器返回的已处理的字符串并打印. server.c 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 #include <unistd.h>

转载:Linux 下C编程常用的头文件

头文件主目录include 头文件目录中总共有32个.h头文件.其中主目录下有13个,asm子目录中有4个,linux子目录中有10个,sys子目录中有5个.这些头文件各自的功能如下,具体的作用和所包含的信息请参见第14章. <a.out.h>:a.out头文件,定义了a.out执行文件格式和一些宏. <const.h>:常数符号头文件,目前仅定义了i节点中i_mode字段的各标志位. <ctype.h>:字符类型头文件,定义了一些有关字符类型判断和转换的宏. <

Java Socket编程以及与Linux Socket API关系

Socket 编程(基于Linux) Socket独立于具体协议的网络编程接口,在ISO模型中,主要位于会话层和传输层之间:在通用的计算机网络五层模型中,主要位于应用层和传输层之间. Linux Socket 基本上就是BSD Socket 需要使用的头文件 数据类型:#include <sys/types.h> 函数定义:#include <sys/socket.h> Socket类型 套接字是一种通信机制,通信两方的一种约定,用套接字中的相关函数来完成通信过程.根据传输内容分为

51单片机头文件

intrins.h 在C51单片机编程中,头文件INTRINS.H的函数使用起来,就会让你像在用汇编时一样简便. 内部函数 描述 _crol_ 字符循环左移 _cror_ 字符循环右移 _irol_ 整数循环左移 _iror_ 整数循环右移 _lrol_ 长整数循环左移 _lror_ 长整数循环右移 _nop_ 空操作8051 NOP 指令 _testbit_ 测试并清零位8051 JBC 指令 reg51.h at89x51.h文件中对P1.1的操作是写成P1_1 reg51.h文件中对P1.

头文件 INTRINS.H 的用法

KEIL中头文件INTRINS.H的作用 在C51单片机编程中,头文件INTRINS.H的函数使用起来,就会让你像在用汇编时一样简便. 内部函数 描述 crol_ 字符循环左移_cror_ 字符循环右移_irol_ 整数循环左移_iror_ 整数循环右移_lrol_ 长整数循环左移_lror_ 长整数循环右移_nop_ 空操作8051 NOP 指令_testbit_ 测试并清零位8051 JBC 指令 函数名: _crol_,_irol_,_lrol_原 型: unsigned char _cr

linux socket网络编程 常用函数及头文件

转自:http://blog.chinaunix.net/u3/102500/showart_2065640.html 一 三种类型的套接字: 1.流式套接字(SOCKET_STREAM) 提供面向连接的可靠的数据传输服务.数据被看作是字节流,无长度限制.例如FTP协议就采用这种. 2.数据报式套接字(SOCKET_DGRAM) 提供无连接的数据传输服务,不保证可靠性. 3.原始式套接字(SOCKET_RAW) 该接口允许对较低层次协议,如IP,ICMP直接访问. 二 基本套接字系统调有有如下一

socket编程头文件分析

在socket网络编程中经常用到一些宏定义.结构和函数,这些经常包含在相关的头文件中,使用时直接include相关头文件即可.下面简单描述下相关的一些结构及头文件. 1. sockaddr  / bits/socket.h socket编程最基本的就是socket地址,其定义在bits/socket.h中.但sys/socket.h包含bits/socket.h,且bits/socket.h明确指出该头文件不能直接使用,应使用sys/socket.h代替. struct sockaddr { _

Socket编程一实现简易的聊天功能以及文件传输

干程序是一件枯燥重复的事,每当感到内心浮躁的时候,我就会找小说来看.我从小就喜爱看武侠小说,一直有着武侠梦.从金庸,古龙,梁羽生系列到凤歌(昆仑),孙晓(英雄志)以及萧鼎的(诛仙)让我领略着不一样的江湖. 如果你有好看的武侠系列小说,给我留言哦.题外话就扯这么多了,接着还是上技术. 看看今天实现的功能效果图: 可以这里使用多台手机进行通讯,[凤歌]我采用的服务器发送消息. 是不是只有发送消息,有些显得太单调了.好,在发送消息的基础上增加文件传输.后期会增加视频,音频的传输,增加表情包.那一起来看

linux网络编程常用头文件

sys/types.h:数据类型定义 sys/socket.h:提供socket函数及数据结构 netinet/in.h:定义数据结构sockaddr_in arpa/inet.h:提供IP地址转换函数 netdb.h:提供设置及获取域名的函数 sys/ioctl.h:提供对I/O控制的函数 sys/poll.h:提供socket等待测试机制的函数 其他在网络程序中常见的头文件 unistd.h:提供通用的文件.目录.程序及进程操作的函数 errno.h:提供错误号errno的定义,用于错误处理