建设工作站服务器
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