可以是可以,不过是有些问题的
接收其实是从一个缓冲区来读取这些收到的数据报,而它是不会分辨里面存在几个数据报的,这个你看看recv , recvfrom函数就知道,只能指定大小。你要它读多少出来,它就会读多少出来。一般情况下,我们都是用一收一读,就是一次性把里面的东西读出来,所以我们设定的大小一般都是超过数据报可能的大小的。
另外一个问题就是socket的这个缓冲区也是有大小的,当接收到的数据报超过了这个缓冲区的容量了,数据就丢失了(UDP)。
通过广播地址(192。168。0。255这样的)来实现广播其实用的并不多。有时候都是通过伦循一个地址表来实现广播,这样实现的时候其实还是点到点,udp又是不可靠的方式,用点到点就可以加入一些响应判断及重发之类的加强可靠性,当然有些数据报无所谓可靠不可靠的就不用理会了。比如作为一个服务端向客户端发送一些更新数据,而且是每一段时间发送一次最新数据,而客户端接受到新数据就更新显示,没有接收到就显示已有数据,这些数据又不重要,那么服务端就只管发送就是了,不必理会是否对方接收到了,即使这个回合没有接收到,下个回合它也可能会接收到的。但是有时候数据的重要性比较高,可能我这边不能漏掉一组数据,这种情况下,就必须要考虑可靠性,服务端就希望在发送出去之后收到客户端的回应以表示客户端接收到了数据。