陈奇网络工作室

LINUX高性能网络通信屏蔽笔记本电脑读写UDP数据

建设工作站服务器

2 .读写UDP数据

2.1ssize_trecvfrom(intsockfd,const void buf,size_t len,int flags,struct socketaddr src_addr,socklen_t addrlen

2.2ssize_tsendto(intsockfd,const void buf,size_t len,int flags,const struct sockaddr* dest_addr,socklen_taddr

注:只需将最后两个参数设置为NULL,recvfrom/sendto系统调用就可用于读取和写入连接套接字的数据

3 .通用数据读写

size_trecvmsg(intsockfd,struct msghdr msg,int flags ) )。

size_tsendmsg(intsockfd,struct msghdr msg,int flags );

struct msghdr{

void msg_name; //套接字地址

socklen_t msg_namelen; //套接字地址长度

struct iovec msg_iov; //零散的存储块

int msg_iovlen; //分布式存储器块的数量

void* msg_control; //指定辅助数据的开头

socklen_t msg_cintrollen; //辅助数据的大小

int msg_flags; //复制函数中的flags参数并在调用过程中更新

}

结构偏移{

void *iov_base; //存储器的起始地址

size_t iov_len; //此内存的长度

}

4 .带外标记

带外数据什么时候来?

传输层使用带外数据( out-of-band,OOB )来传输重要数据,当通信方需要向对方通知重要数据时,协议可以迅速地将这些数据传输到对方。 为了发送这些数据,协议一般不使用与普通数据相同的信道,而是使用不同的信道。 linux系统的套接字机制支持通过低级协议发送和接收带外数据。 但是TCP协议没有真正意义上的带外数据。 为了发送重要协议,TCP提供了一种称为紧急模式( urgent mode )的机制。 TCP协议在数据段上设置URG位,表示进入紧急模式。 接收方可以对紧急模式采取特别的处理。 显而易见,这种方式很难阻止数据,服务器端程序可以通过捕获SIGURG信号来立即接收数据。 这就是我们追求的效果。

intsockatmark(intsockfd )。

返回1时,我们使用带有MSG_OOB标志的recv呼叫接收带外数据

如果不返回0

5 .地址信息函数

要连接到套接字的本地套接字地址和远程套接字地址

intgetsocketname(intsockfd,struct sockaddr address,socklen_t address_len ) ) )。

intgetpeername(intsockfd,struct sockaddr address,socklen_t address_len ) )。

6 .插座选项

fcntl系统调用是控制文件描述符属性的通用POSIX方法

如何特殊设置套接字文件描述符属性

intgetsockopt(intsockfd,int level,int option_name,void option_value,socklen_t restrict option_len ) )

int setsockopt (

这块暂时不写了

详情请访问云服务器、域名注册、虚拟主机的问题,请访问西部数码代理商官方网站: www.chenqinet.cn

相关推荐

后台-系统设置-扩展变量-手机广告位-内容页底部广告位3