文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Network IPC: Sockets(3)

Network IPC: Sockets(3)

时间:2010-09-02  来源:blueelfmoon

1、Socket Options (1)可以设置和获取的选项      .对应于所有的socket类型的generic options      .靠底层协议支持,在socket层管理的选项      .与协议对应的选项 (2)setsockopt()

int setsockopt(int sockfd, int level, int option, const void *val,socklen_t len);
             Returns: 0 if OK, -1 on error

     level: generic socket-level options为SOL_SOCKET             协议专属的时候填写: TCP为IPPROTO_TCP, IP为IPPROTO_IP      option:(P580)      val:根据option,指向一个数据结构体或者整数      len:val指向的数据长度大小
(2)getsockopt()

#include <sys/socket.h>
int getsockopt(int sockfd, int level, int option, void *restrict val, socklen_t *restrict lenp);
           Returns: 0 if OK, -1 on error

    lenp:指向整数的指针,调用getsockopt之前,设置成拷贝options到buffer的大小             如果option>lenp,option将被安静的truncated;             如果option<=lenp,lenp==option大小
2、Out-of-Band Data (1)在传送队列中,Out-of-Band Data比任何其他的数据都先发送    这是某些协议的选项特性,比如TCP支持,UDP就不支持 (2)TCP只支持1个byte的 "urgent"数据    可以在send() sendto() sendmsg()三个函数中设置MSG_OOB标志    但是如果设置超过1byte,只有最后1byte当着"urgent"数据 (3)当"urgent"数据接收到时,一般发送SIGURG信号    可以安排规定的进程去接收信号

fcntl(sockfd, F_SETOWN, pid);
owner = fcntl(sockfd, F_GETOWN, 0)

   pid>0,sockfd归属于哪个pid    pid<-1,代表sockfd归属于哪个group ID==pid的进程
(4)TCP还支持urgent mark    urgent数据将出现在普通数据流的哪一点    可以用SO_OOBINLINE选项让urgent数据跟普通数据一块接收,为了确认到达urgent mark可以使用sockatmark()函数

#include <sys/socket.h>
int sockatmark(int sockfd);
         Returns: 1 if at mark. 0 if not at mark, -1 on error

  也可以设置MSG_OOB标志,使用recv(), recvfrom(), recvmsg()函数中的1个提前接收urgent数据
3、Nonblocking and Asynchronous I/O    当可以读取socket数据时,或者写队列的时候有空间了,可以发送SIGIO信号    允许异步I/O需要2步:              .建立socket拥有关系,以便signal可以投递                       .使用fcntl的F_SETOWN命令                       .使用ioctl的FIOSETOWN命令                       .使用ioctl的SIOCSPGRP命令 注:LINUX不支持后2个命令              .当I/O操作不会被block时,告诉socket我们要它singal us                       .使用fcntl的F_SETFL命令并使用O_ASYNC标志                       .使用ioctl的FIOASYNC命令




相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载