网络编程常见函数
2016-11-18 21:10
183 查看
进行Socket编程的常用函数有:
Socket : 创建一个socket
Bind: 用于绑定IP地址和端口号到socket
Connect: 该函数用于绑定之后的client端与服务器建立连接
listen:设置能处理的最大连接要求,Listen()并未开始接收连线,只设置socket为listen模式
accept:用来接受socket连接
send:发送数据
recv:接收数据
1.socket
函数的作用:创建套接字,建立一个新的socket套接字
函数的原型:intsocket(int family, int type, int protocol);
函数的参数:family:表示何种地址类型
AF_INET:IPv4;AF_INET6:Ipv6
type:SOCKET_STREAM:TCP面向数据流
SOCKET_DGRAM:UDP使用不连续不可信赖的数据包链接
SOCKET_RAW:提供原始网络协议
protocol:传输协议编号(设为0)
返回值:成功返回socket套接字描述符;出错返回-1。
头文件:#include<sys/socket.h>
socket()打开一个网络通讯端口,如果成功的话,就像open()一样返回一个文件描述符,应用程序可以像读写文件一样用read/write在网络上收发数据,如果socket()调用出错则返回-1
对于IPv4,family参数指定为AF_INET
对于TCP协议,type参数指定SOCK_STREAM,表示面向流的传输协议如果是UDP协议,则type参数指定为SOCK_DGRAM,表示面向数据报的传输协议
protocol参数的介绍从略,指定为0即可
2.bind
函数的作用:绑定IP地址
函数的原型:intbind(int sockfd, const struct sockaddr *myaddr, socklen_t addrlen);
函数的参数:sockfd:socket套接字描述符
myaddr:主机地址
addrlen:sockaddr的地址长度
头文件:#include<sys/socket.h>
#include<sys/types.h>
服务器程序所监听的网络地址和端口号通常是固定不变的,客户端程序得知服务器程序的地址和端口号后就可以向服务器发起连接,因此服务器需要调用bind绑定一个固定的网络地址和端口号.bind()成功返回0,失败返回-1。
bind()的作用是将参数sockfd和myaddr绑定在一起,使 sockfd这个用于网络通讯的文件描述符监听myaddr所描述的地址和端口号。
struct sockaddr*是一个通用指针类型,myaddr参数实际上可以接受多种协议的sockaddr结构体,而它们的长度各不相同,所以需要第三个参数addrlen指定结构体的长度。
3.connect
函数的作用:建立socket连接,通常客户端连接服务器使用
函数的原型:intconnect(int sockfd, const struct sockaddr *servaddr, socklen_t addrlen);
函数的参数:servaddr:表示连接的服务器的IP地址
addrlen:struct sockaddr的长度
返回值:成功返回0,出错返回-1。
客户端需要调用connect()连接服务器,connect和bind的参数形式一致,区别在于bind的参数是自己的地址,而connect的参数是对方的地址.
connect()成功返回0,出错返回-1。
4.listen
函数的作用:聆听网络,等待连接
函数的原型:intlisten(int sockfd, int backlog);
函数的参数:sockfd:描述符
backlog:允许接入的客户端数目
返回值:成功返回0, 出错返回-1。
listen并没有连线,只是设置socket的listen模式而已,真正连接的是accept
5.accept
函数的作用:接受网络连接,客户端连接(三次握手在这个地方)
函数的原型:intaccept(int sockfd, struct sockaddr *cliaddr, socklen_t *addrlen);
函数的参数:addr:连接成功,填充远端客户机的地址
addrlen:struct sockaddr的长度
返回值:成功返回新的sock_fd,失败返回-1。
三方插手完成后,服务器调用accept()接受连接,如果服务器调用accept()时还没有客户端的连接请求,就阻塞等待直到有客户端连接上来,cliaddr是一个传出参数,accept()返回时传出客户端的地址和端口号.addrlen参数是一个传入传出参数(value-result argument),传入的是调用者提供的缓冲区cliaddr的长度以避免缓冲区溢出问题,传出的是客户端地址结构体的实际长度(有可能没有占满调用者提供的缓冲区)。
如果给cliaddr参数传NULL,表示不关心客户端的地址。
6.send
函数的作用:经过socket传送数据,向对方发送数据
函数的原型:intsend(int sockfd, const void *msg, int len, unsigned int flags);
函数的参数:sock_fd:建立起来的socket连接描述符,连接远方的IP地址
msg:发送的数据
len:数据长度
flags:设为0
返回值:成功返回实际传送出去的字节数,出错返回-1。
7.recv
函数的作用:经过socket接收数据
函数的原型:intrecv(int sock_fd, void *buf, int len, unsigned int flags);
函数的参数:sock_fd:accept以后的socket套接字描述符
buf:存放地址
len:接收数据的最大长度
flags:设为0
返回值:成功返回接收的字符数,出错返回-1。
8.sendto
函数的作用:传送socket数据,UDP使用较多
函数的原型:intsendto(int sockfd, const void *msg, int len, unsigned int flags, const structsockaddr *toaddr, int tolen);
函数的参数:sock_fd:套接字描述符
msg:发送的消息内存
len:消息的长度
toaddr:要发送消息的目的地址
tolen:sizeof(struct sockaddr)
返回值:成功返回实际传送的字符数,出错返回-1。
9.recvfrom
函数的作用:从socket接收数据
函数的原型:intrecvfrom(int sockfd, void *buf, int len, unsigned int flags, struct sockaddr*from, int *fromlen);
函数的参数:同sendto
返回值:成功返回接收的字节数,出错返回-1。
Socket : 创建一个socket
Bind: 用于绑定IP地址和端口号到socket
Connect: 该函数用于绑定之后的client端与服务器建立连接
listen:设置能处理的最大连接要求,Listen()并未开始接收连线,只设置socket为listen模式
accept:用来接受socket连接
send:发送数据
recv:接收数据
1.socket
函数的作用:创建套接字,建立一个新的socket套接字
函数的原型:intsocket(int family, int type, int protocol);
函数的参数:family:表示何种地址类型
AF_INET:IPv4;AF_INET6:Ipv6
type:SOCKET_STREAM:TCP面向数据流
SOCKET_DGRAM:UDP使用不连续不可信赖的数据包链接
SOCKET_RAW:提供原始网络协议
protocol:传输协议编号(设为0)
返回值:成功返回socket套接字描述符;出错返回-1。
头文件:#include<sys/socket.h>
socket()打开一个网络通讯端口,如果成功的话,就像open()一样返回一个文件描述符,应用程序可以像读写文件一样用read/write在网络上收发数据,如果socket()调用出错则返回-1
对于IPv4,family参数指定为AF_INET
对于TCP协议,type参数指定SOCK_STREAM,表示面向流的传输协议如果是UDP协议,则type参数指定为SOCK_DGRAM,表示面向数据报的传输协议
protocol参数的介绍从略,指定为0即可
2.bind
函数的作用:绑定IP地址
函数的原型:intbind(int sockfd, const struct sockaddr *myaddr, socklen_t addrlen);
函数的参数:sockfd:socket套接字描述符
myaddr:主机地址
addrlen:sockaddr的地址长度
头文件:#include<sys/socket.h>
#include<sys/types.h>
服务器程序所监听的网络地址和端口号通常是固定不变的,客户端程序得知服务器程序的地址和端口号后就可以向服务器发起连接,因此服务器需要调用bind绑定一个固定的网络地址和端口号.bind()成功返回0,失败返回-1。
bind()的作用是将参数sockfd和myaddr绑定在一起,使 sockfd这个用于网络通讯的文件描述符监听myaddr所描述的地址和端口号。
struct sockaddr*是一个通用指针类型,myaddr参数实际上可以接受多种协议的sockaddr结构体,而它们的长度各不相同,所以需要第三个参数addrlen指定结构体的长度。
3.connect
函数的作用:建立socket连接,通常客户端连接服务器使用
函数的原型:intconnect(int sockfd, const struct sockaddr *servaddr, socklen_t addrlen);
函数的参数:servaddr:表示连接的服务器的IP地址
addrlen:struct sockaddr的长度
返回值:成功返回0,出错返回-1。
客户端需要调用connect()连接服务器,connect和bind的参数形式一致,区别在于bind的参数是自己的地址,而connect的参数是对方的地址.
connect()成功返回0,出错返回-1。
4.listen
函数的作用:聆听网络,等待连接
函数的原型:intlisten(int sockfd, int backlog);
函数的参数:sockfd:描述符
backlog:允许接入的客户端数目
返回值:成功返回0, 出错返回-1。
listen并没有连线,只是设置socket的listen模式而已,真正连接的是accept
5.accept
函数的作用:接受网络连接,客户端连接(三次握手在这个地方)
函数的原型:intaccept(int sockfd, struct sockaddr *cliaddr, socklen_t *addrlen);
函数的参数:addr:连接成功,填充远端客户机的地址
addrlen:struct sockaddr的长度
返回值:成功返回新的sock_fd,失败返回-1。
三方插手完成后,服务器调用accept()接受连接,如果服务器调用accept()时还没有客户端的连接请求,就阻塞等待直到有客户端连接上来,cliaddr是一个传出参数,accept()返回时传出客户端的地址和端口号.addrlen参数是一个传入传出参数(value-result argument),传入的是调用者提供的缓冲区cliaddr的长度以避免缓冲区溢出问题,传出的是客户端地址结构体的实际长度(有可能没有占满调用者提供的缓冲区)。
如果给cliaddr参数传NULL,表示不关心客户端的地址。
6.send
函数的作用:经过socket传送数据,向对方发送数据
函数的原型:intsend(int sockfd, const void *msg, int len, unsigned int flags);
函数的参数:sock_fd:建立起来的socket连接描述符,连接远方的IP地址
msg:发送的数据
len:数据长度
flags:设为0
返回值:成功返回实际传送出去的字节数,出错返回-1。
7.recv
函数的作用:经过socket接收数据
函数的原型:intrecv(int sock_fd, void *buf, int len, unsigned int flags);
函数的参数:sock_fd:accept以后的socket套接字描述符
buf:存放地址
len:接收数据的最大长度
flags:设为0
返回值:成功返回接收的字符数,出错返回-1。
8.sendto
函数的作用:传送socket数据,UDP使用较多
函数的原型:intsendto(int sockfd, const void *msg, int len, unsigned int flags, const structsockaddr *toaddr, int tolen);
函数的参数:sock_fd:套接字描述符
msg:发送的消息内存
len:消息的长度
toaddr:要发送消息的目的地址
tolen:sizeof(struct sockaddr)
返回值:成功返回实际传送的字符数,出错返回-1。
9.recvfrom
函数的作用:从socket接收数据
函数的原型:intrecvfrom(int sockfd, void *buf, int len, unsigned int flags, struct sockaddr*from, int *fromlen);
函数的参数:同sendto
返回值:成功返回接收的字节数,出错返回-1。
相关文章推荐
- 网络编程常见函数的返回值
- 网络编程常见函数解析
- Linux 网络编程常用函数和结构速查
- 网络编程 客户端 服务端 函数 流程 图示 来自深入理解计算机系统一书 P704
- Linux编程常用的函数(八) 网络编程
- 完成端口及网络编程之QA(常见问题,持续添加)
- 完成端口及网络编程之QA(常见问题,持续添加)
- 完成端口及网络编程之QA(常见问题,持续添加)
- ASP.NET网络编程中常用到的27个函数集.
- Linux网络编程:2. 初等网络函数介绍(TCP)
- Linux网络编程:4. 完整的读写函数
- 完成端口及网络编程之QA(常见问题,持续添加)
- Linux网络编程常用信息 结构 格式化 函数 等
- ASP.NET网络编程中常用到的27个函数集
- ASP.NET网络编程中常用到的27个函数集
- ASP.NET网络编程中常用到的27个函数集
- ASP.NET网络编程中常用到的27个函数集
- Linux网络编程几个必需的网络函数介绍
- ASP.NET网络编程中常用的27个函数集
- ASP.NET网络编程中常用的27个函数集