Linux 的套接字编程 (2)

来源:互联网 发布:晟元数据 刘滨 编辑:程序博客网 时间:2024/06/05 13:23

一、sendto函数

view plain
  1. int Sendto(int sockfd, const void * data, int data_len, unsigned int flags, struct sockaddr *remaddr,int remaddr_len)  
 

 

功能:基于UDP发送数据报,返回实际发送的数据长度,出错时返回-1

参数说明:

sockfd:套接字描述符

data:指向要发送数据的指针

data_len:数据长度

flags:一直为0

remaddr:远端地址:IP地址和端口号

remaddr_len :地址长度

举例:sendto(sockfd,buf,sizeof(buf),0,(struct sockaddr *)&address, sizeof(address)); 

 

二、send函数

view plain
  1. int Send(int sockfd, const void * data, int data_len, unsigned int flags)  
 

 

功能:

在TCP连接上发送数据,返回成功传送数据的长度,出错时返回-1。

send会将外发数据复制到OS内核中,也可以使用send发送面向连接的UDP报文。

参数说明:

sockfd:套接字描述符

data:指向要发送数据的指针

data_len:数据长度

flags:一直为0

举例(p50):send(s,req,strlen(req),0);

三、recvfrom函数
view plain
  1. int recvfrom(int sockfd, void *buf, int buf_len,unsigned int flags,struct sockaddr *from,int fromlen);  
 
功能:从UDP接收数据,返回实际接收的字节数,失败时返回-1
参数说明:
Sockfd:套接字描述符
buf:指向内存块的指针
buf_len:内存块大小,以字节为单位
flags:一般为0
from:远端的地址,IP地址和端口号
fromlen:远端地址长度
举例:recvfrom(sockfd,buf,8192,0, ,(struct sockaddr *)&address, sizeof(address)); 
四、recv函数
view plain
  1. int recv(int sockfd, void *buf, int buf_len,unsigned int flags);   
 
功能:
从TCP接收数据,返回实际接收的数据长度,出错时返回-1。
服务器使用其接收客户请求,客户使用它接受服务器的应答。如果没有数据,将阻塞,如果收到的数据大于缓存的大小,多余的数据将丢弃。也可以使用recv接收面向连接的UDP的报文
参数说明:
Sockfd:套接字描述符
Buf:指向内存块的指针
Buf_len:内存块大小,以字节为单位
flags:一般为0 
举例:recv(sockfd,buf,8192,0)
五、close函数
view plain
  1. close(int sockfd);   
 
功能:
撤销套接字.
如果只有一个进程使用,立即终止连接并撤销该套接字,如果多个进程共享该套接字,将引用数减一,如果引用数降到零,则撤销它。
参数说明:
Sockfd:套接字描述符
举例:close(socket_descriptor)
六、其它套接字函数
gethostname 获得主机名
getpeername 获得与套接口相连的远程协议地址
getsockname 获得套接口本地协议地址
gethostbyname 根据主机名取得主机信息
gethostbyaddr 根据主机地址取得主机信息
getprotobyname 根据协议名取得主机协议信息
getprotobynumber 根据协议号取得主机协议信息
getservbyname 根据服务名取得相关服务信息
getservbyport 根据端口号取得相关服务信息
getsockopt/setsockopt 获取/设置一个套接口选项 
ioctlsocket 设置套接口的工作方式
七、UDP调用序列

 

八、TCP调用序列
原创粉丝点击