组播编程--setsockopt()选项参数小结
来源:互联网 发布:atm光纤网络 编辑:程序博客网 时间:2024/06/05 01:02
组播编程--setsockopt()选项参数作用小结
SO_RCVTIMEO SO_SNDTIMEO 设置网络发送、接收延时。在send(),recv()过程中有时由于网络状况等原因,发收不能预期进行,而设置收发时限; 疑问:如果超时了,不能收到或不能发送到,会是什么情况呢?
SO_RCVBUF SO_SNDBUF 系统默认的状态发送和接收一次为8688字节(约为8.5K);在实际的过程中发送数据和接收数据量比较大,可以设置socket缓冲区。
SO_BROADCAST 设置广播。
SO_LINGER 当还有数据末发送完时,不立刻关闭套接字,可设置一个延时。
组播编程一个重要的结构体:
struct ip_mreq
{
struct in_addr imr_multiaddr; // 组播组的IP地址。
struct in_addr imr_interface; // 本地某一网络设备接口的IP地址。当一台主机有两个网卡时,此参数确定是哪一个IP。
};
IP_ADD_MEMBERSHIP 加入组播组。
setsockopt(s,IPPROTO_IP,IP_ADD_MEMBERSHIP,&mreq,sizeof(mreq));
IP_MULTICAST_IF作用似乎跟bind()有些重复。对于单播的时候,有inet_sock的成员rcv_saddr==saddr(本地发送数据用到的地址=本地接收数据的地址),当用于组播时,saddr等于0(即本地发送数据地址为0),此时不知道用哪个地址发送数据,这个任务就留给了IP_MULTICAST_IF选项。 要有接收组播数据工能时,bind()不是邦写本地主机的IP,而是邦定组播组的IP。也就是说要接收到组播组发送的数据,还得把本地的IP信息提供上去,此时就用到IP_MULTICAST_IF。
IP_MULTICAST_LOOP 向loopback接口发送一个组播数据报,确保本机需要接收该组中的数据的进程能收到数据。
IP_MULTICAST_TTL TTL原本用来控制数据包在网络中的存活时间,防止由于路由器配置错误导致出现数据包传播的死循环;TTL为 1 224.0.0.0-224.0.0.255 只能在发送主机所在的一个子网内的传送,不会通过路由器转发。
更详细
- 组播编程--setsockopt()选项参数小结
- 组播中的setsockopt
- socket 编程入门 setsockopt配置socket选项
- Setsockopt选项
- Setsockopt选项
- Setsockopt选项
- Setsockopt选项
- setsockopt选项
- 套接字选项setsockopt中参数之SO_REUSEADDR
- UNIX网络编程——套接字选项(setsockopt)
- socket编程选项——setsockopt和getsockopt
- 组播小结
- 转:组播setsockopt:no such device问题的解决方法
- Setsockopt选项[1]
- Setsockopt选项[2]
- setsockopt配置socket选项
- setsockopt :SO_LINGER 选项设置
- [精华] 讨论 Setsockopt选项
- WebShell通过SQL语句管理MSSQL
- warning C4251: 'vectortemp::m_Vector' : class 'std::vector' needs to have dll-interface to be used by clients of class 'vectorte
- SQL注入原理和方法
- “笑死人”的故事,不看后悔!
- 靠垃圾站已经不能继续混下去了
- 组播编程--setsockopt()选项参数小结
- Oracle 数据库表空间(tablespace)的创建、删除、修改、扩展以及检查
- Porting Guide of Android Power to Marvell 2.6.24
- 怎样学好编程?值得你一看的文章!
- 初学做网站的草根站长必读
- 常用SQL注入语句
- 字符串包含引出来的“勤与懒”故事
- 怎么样让网站有一个好听的中文名称
- AIX 安装第二块硬盘报错:450000D1