当前位置: 技术问答>linux和unix
socke做服务器是如何实现广播的
来源: 互联网 发布时间:2016-02-15
本文导语: RT,socket作为服务器程序的时候最正常的处理应该是等待客户端的连接,那么如果他要向客户端主动发起广播,应该如何实现。 | socket作为服务器程序的时候最正常的处理应该是等待客户端的...
RT,socket作为服务器程序的时候最正常的处理应该是等待客户端的连接,那么如果他要向客户端主动发起广播,应该如何实现。
|
socket作为服务器程序的时候最正常的处理应该是等待客户端的连接,那么如果他要向客户端主动发起广播
======================================================================================
先说明一下, TCP的情况下, 如果没有连接, 是不可能找到客户端的, 也就无法发广播.
正常的所谓"广播"应该是这样的:
N个客户端连接, 连接后, 把client_fd存储在链表中, 这是一个客户端描述符队列.
广播时, 遍历该链表send().
======================================================================================
先说明一下, TCP的情况下, 如果没有连接, 是不可能找到客户端的, 也就无法发广播.
正常的所谓"广播"应该是这样的:
N个客户端连接, 连接后, 把client_fd存储在链表中, 这是一个客户端描述符队列.
广播时, 遍历该链表send().
|
其实很简单,建立一个链表来存储连接到该服务器端的客户端的数据,然后通过一个循环来对所有的客户端socket发送消息就可以了
|
setsockopt(sock, SOL_SOCKET, SO_BROADCAST, (SOCKPARM)&lVal, sizeof(lVal));//广播
setsockopt(sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, (SOCKPARM)&mreq, sizeof(mreq))//组播
设置socket属性后还要看你的交换机支不支持广播、组播方式。
setsockopt(sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, (SOCKPARM)&mreq, sizeof(mreq))//组播
设置socket属性后还要看你的交换机支不支持广播、组播方式。
|
socket作为服务器程序的时候最正常的处理应该是等待客户端的连接,那么如果他要向客户端主动发起广播
======================================================================================
先说明一下, TCP的情况下, 如果没有连接, 是不可能找到客户端的, 也就无法发广播.
正常的所谓"广播"应该是这样的:
N个客户端连接, 连接后, 把client_fd存储在链表中, 这是一个客户端描述符队列.
广播时, 遍历该链表send().
--------------------------
他没有说是tcp呀。只是说socket服务器。
======================================================================================
先说明一下, TCP的情况下, 如果没有连接, 是不可能找到客户端的, 也就无法发广播.
正常的所谓"广播"应该是这样的:
N个客户端连接, 连接后, 把client_fd存储在链表中, 这是一个客户端描述符队列.
广播时, 遍历该链表send().
--------------------------
他没有说是tcp呀。只是说socket服务器。