不采用广播,对多个IP同时发送数据的有关问题

不采用广播,对多个IP同时发送数据的问题
因为底层设备已经固定了。只接受简单的udp数据。
当前要做的是,取一个设备的信息,复制给其他任意台设备。
现在我是这么做的,对这些待复制设备,检测一遍,提取出ip。
每提取一个ip,就向下发送一组数据(一组大概60条udp指令)。
想到过,动态创建线程,每个线程构造一个socket来发送数据,但是一直没做好。自己本身也没有在MFC内使用过多线程的经验。

请求指导。
------解决方案--------------------
你的思路也是可以的
至于说线程的知识,可以网上找点例子代码来参考一下
创建线程的相关函数有
CreateThreadEx() -- win32api
_beginthreadex() c++接口函数
具体用法请自己找一下参考资料
------解决方案--------------------
用一个链表维护,然后遍历链表,发送数据
放到一个线程中处理
------解决方案--------------------
引用:
Quote: 引用:

首先汗一个,我也不知道mfc能起多少线程,我用到过10多个是可以的。
另外,如果发送的数据量不大,并且目标点不多的话,你为每个目标建立线程的收益并不大。
比如你有60个目标,那么你要起60个线程,如果循环起60个线程耗时不比你一个线程循环发60次数据短的话,就没有必要。
或者你也可以做类似线程池一样的东西,做一个IP队列,起一个单独的线程检测IP,往队列里插,另外起3-5个(起多少看情况)线程从队列里取出来发送,循环往复直至队列空。

当然你也可以试试mfc能不能起多线程,如果可以的话,你的60个线程可以在线程中起,这样更快,比如所有线程都执行如下线程函数
Fun()
{
    while(--a>= 0)//a为全局信号量,初始值为60
    {
       起线程;//线程函数依然是Fun       
    }

    发送数据;
}

当然,以上方法要注意线程的同步,在操作队列和信号量时。


其实。最终目的是这样的。11个设备。1号对2-11号 完全复制内容。现在我是2 3 4 这样来。每一次发送耗时5-10秒。这样起码1分钟了。
现在我需要同时发送到2-11.
我考虑的问题:
1,到底需要复制多少份,是未知的。
2,每条发送的内容,socket和端口是否需要另外创建,还是说可以通过一个socket和端口发送接受数据。

这样就要看你5-6秒耗时是花在查询IP上还是花在发送上了。如果纯粹的几K内容的话,发送一次应该花不了5-6s那么长吧。
socket可以用用一个,但是有缓冲区大小,如果数据太大,也得排队,你可以固定用几个。
------解决方案--------------------
你可以采用多播方式,不用广播的话WSAJoinLeaf