嵌入式Linux网络编程之:网络基础编程
的连接请求。
n connect():该函数在TCP中是用于bind()的之后的client端,用于与服务器端建立连接,而在UDP中由于没有了bind()函数,因此用connect()有点类似bind()函数的作用。
n send()和recv():这两个函数分别用于发送和接收数据,可以用在TCP中,也可以用在UDP中。当用在UDP时,可以在connect()函数建立连接之后再用。
n sendto()和recvfrom():这两个函数的作用与send()和recv()函数类似,也可以用在TCP和UDP中。当用在TCP时,后面的几个与地址有关参数不起作用,函数作用等同于send()和recv();当用在UDP时,可以用在之前没有使用connect()的情况下,这两个函数可以自动寻找指定地址并进行连接。
服务器端和客户端使用TCP协议的流程如图10.6所示。
服务器端和客户端使用UDP协议的流程如图10.7所示。
图10.6 使用TCP协议socket编程流程图 图10.7 使用UDP协议socket编程流程图
(2)函数格式。
表10.8列出了socket()函数的语法要点。
表10.8 socket()函数语法要点
所需头文件 | #include <sys/socket.h> | |
函数原型 | int socket(int family, int type, int protocol) | |
函数传入值 | family: 协议族 | AF_INET:IPv4协议 |
AF_INET6:IPv6协议 | ||
AF_LOCAL:UNIX域协议 | ||
AF_ROUTE:路由套接字(socket) | ||
AF_KEY:密钥套接字(socket) | ||
type: 套接字类型 | SOCK_STREAM:字节流套接字socket | |
SOCK_DGRAM:数据报套接字socket | ||
SOCK_RAW:原始套接字socket | ||
protoco:0(原始套接字除外) | ||
函数返回值 | 成功:非负套接字描述符 | |
出错:-1 |
表10.9列出了bind()函数的语法要点。
表10.9 bind()函数语法要点
所需头文件 | #include <sys/socket.h> |
函数原型 | int bind(int sockfd, struct sockaddr *my_addr, int addrlen) |
函数传入值 | socktd:套接字描述符 |
my_addr:本地地址 | |
addrlen:地址长度 | |
函数返回值 | 成功:0 |
出错:-1 |
端口号和地址在my_addr中给出了,若不指定地址,则内核随意分配一个临时端口给该应用程序。
表10.10列出了listen()函数的语法要点。
表10.10 listen()函数语法要点
所需头文件 | #include <sys/socket.h> |
函数原型 | int listen(int sockfd, int backlog) |
函数传入值 | socktd:套接字描述符 |
backlog:请求队列中允许的最大请求数,大多数系统缺省值为5 | |
函数返回值 | 成功:0 |
出错:-1 |
表10.11列出了accept()函数的语法要点。
表10.11 accept()函数语法要点
所需头文件 | #include <sys/socket.h> |
函数原型 | int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen) |
函数传入值 | socktd:套接字描述符 |
addr:客户端地址 | |
addrlen:地址长度 | |
函数返回值 | 成功:0 |
出错:-1 |
表10.12列出了connect()函数的语法要点。
表10.12 connect()函数语法要点
所需头文件 | #include <sys/socket.h> |
函数原型 | int connect(int sockfd, struct sockaddr *serv_addr, int addrlen) |
函数传入值 | socktd:套接字描述符 |
serv_addr:服务器端地址 | |
addrlen:地址长度 | |
函数返回值 | 成功:0 |
出错:-1 |
表10.13列出了send()函数的语法要点。
表10.13 send()函数语法要点
所需头文件 | #include <sys/socket.h> #include |
嵌入式Linux 网络编程 SOCKET 操作系统 相关文章:
- 嵌入式Linux技术在工业控制网络中的应用(10-30)
- 基于嵌入式Linux的组态软件实时数据库的设计(02-01)
- 基于ARM+DSP的嵌入式Linux数控系统设计(11-18)
- 基于嵌入式Linux的细胞特征提取算法设计(11-19)
- 基于S3C2410的嵌入式Linux系统构建(03-02)
- 嵌入式Linux网络编程之:实验内容——NTP协议实现(08-13)