我在写一个Solaris下的无连接网络通讯程序,使用sendto()函数,我想实现:
(1)对网络上所有计算机发送
(2)根据IP地址列表发送
如何实现啊?

解决方案 »

  1.   

    1.对所有计算机发送,可以使用广播,sockaddr_in* to设定成广播地址就可以了。2.可以使用组播(多播);  组播技术是TCP/IP传送方式的一种。  TCP/IP传送方式。TCP/IP传送方式有三种:单播,广播,组播。  单播(Unicast)传输:在发送者和每一接收者之间需要单独的数据信道。 如果一台主机同时给很少量的接收者传输数据,一般没有什么问题。但如果有大量主机希望获得数据包的同一份拷贝时却很难实现。 这将导致发送者负担沉重、延迟长、网络拥塞;为保证一定的服务质量需增加硬件和带宽。   组播(Multicast)传输:它提高了数据传送效率。减少了主干网出现拥塞的可能性。组播组中的主机可以是在同一个物理网络, 也可以来自不同的物理网络(如果有组播路由器的支持)。   广播(Broadcast)传输:是指在IP子网内广播数据包,所有在子网内部的主机都将收到这些数据包。 广播意味着网络向子网主机都投递一份数据包,不论这些主机是否乐于接收该数据包。然而广播的使用范围非常小, 只在本地子网内有效,因为路由器会封锁广播通信。广播传输增加非接收者的开销。
     
    IP多播通信必须依赖于IP多播地址,在IPv4中它是一个D类IP地址,范围从224.0.0.0到
    239.255.255.255,并被划分为局部链接多播地址、预留多播地址和管理权限多播地址三类。其中,局部链接多播地址范围在224.0.0.0~224.0.0.255,这是为路由协议和其它用途保留的地址,路由器并不转发属于此范围的IP包;预留多播地址为224.0.1.0~238.255.255.255,可用于全球范围(如Internet)或网络协议;管理权限多播地址为239.0.0.0~239.255.255.255,可供组织内部使用,类似于私有IP地址,不能用于Internet,可限制多播范围。  使用同一个IP多播地址接收多播数据包的所有主机构成了一个主机组,也称为多播组。一个多播
    组的成员是随时变动的,一台主机可以随时加入或离开多播组,多播组成员的数目和所在的地理位置
    也不受限制,一台主机也可以属于几个多播组。此外,不属于某一个多播组的主机也可以向该多播组
    发送数据包。 
      

  2.   

    关于组播的文章:http://www.tss.com.cn/index_technic8.htmhttp://www.nethovel.com/documents/docview.asp?ID=2363http://www.ccw.com.cn/htm/net/seminar/01_5_31_4.asp
      

  3.   

    根据要求可以分成tcp和udp么,直接广播(狠了点)
      

  4.   

    jemmylau(枕头) :
    1.对所有计算机发送,可以使用广播,sockaddr_in* to设定成广播地址就可以了。如何设定成广播地址啊?我很菜的,还没有做过网络编程。