首页 > 软件 > 在UDP通信程序中,如何实现服务器与客户端之间的“一对多”通信?

在UDP通信程序中,如何实现服务器与客户端之间的“一对多”通信?

软件 2022-07-21

udp 协议 如何实现 局域网 一对多的通信?他们对应的原理是什么?腾讯qq 是用tcp还是udp?求教高手详解谢谢

QQ应该是UDP吧,tcp是要通信前要建立好连接的,QQ可以离线传送文件

一对多就是“组播”的通信模式咯,源端将数据发送至一个组地址,只有加入该组的成员可以接收该数据。相比单播来说,使用组播方式传递信息,用户的增加不会显著增加网络的负载;不论接收者有多少,相同的组播数据流在每一条链路上最多仅有一份,这样就及时解决了网络中用户数量不确定的问题。另外,相比广播来说,组播数据流仅会流到有接收者的地方,不会造成网络资源的浪费。

关于UDP协议如何实现组播,去分析一下UDP报文格式,及封装IP头后的格式吧,源地址与目的地址应该在IP头里

说一下数据链路层吧,单播情况的数据收发过程如下:

1.当上层要发送数据的时候,把数据提交给MAC子层。

2.MAC子层把上层提交来的数据放入缓存区。

3.然后加上目的MAC地址和自己的MAC地址(源MAC地址),计算出数据帧的长度,形成以太网帧。

4.以太网帧根据目的MAC地址发送到对端设备。

5.对端设备用帧的目的MAC地址,跟mAC地址表中的条目进行比较

只要有一项匹配,则接收该以太网帧

若无任何匹配的项目,则丢弃该以太网帧

以上描述的是单播情况。如果上层应用程序加入一个组播组,数据链路层根据应用程序加入的组播组形成一个组播MAC地址,并把该组播MAC地址加入MAC地址表。这样当有针对该组的数据帧的时候,MAC子层就接收该数据帧并向上层发送。

c#UDP聊天程序,关于服务端和客户端的功能!急!!!!

QQ以前的客户端之间传递可能是P2P的,尤其在发送文件的时候,不过现在不好说了,现在几乎所有信息都会通过服务器中转。 如果想采用P2P的形式,你在服务器段保存一份客户端IP地址列表,客户端想互相通讯时,请求一下这个列表就可了,不过客户端你还是要有listen端口。 如果想通过服务器中转,那就简单了,设计下你的消息协议,由服务器中转就是了。

如何实现一个tcp/udp客户端和服务器,以及它们之间是如何交互

你先要了解一下网络协议。你这说的是传输层的协议,TCP和UDP都是固定端口的。网络分成好多层的,每层的端口都不一样,每一层将会把低一层的数据封装打包,这个就是所谓的协议,不同功能的软件和硬件处理自己这层的端口和数据,然后再传递给上层。每一层协议不相关,也不需要知道和理解传来的是什么,只负责自己的规则就好,传过来的都当成数据处理打包。RTSP是应用层的协议,在TCP和UDP之上层,可以自定义端口,一般是554。系统自己会处理TCP和UDP数据,socket都已经实现好了,然后再将RTSP的协议数据通过端口554给你客户端。所以你不用太关心TCP和UDP层的东西,如果你发烧无聊,也可以自己实现T

C#的UDP,一对多的话只能是服务器到客户端? 不能每个客户端分别和服务器通话??

服务端要面对多个客户端的连接,所以,称一对多连接。 通话当然可以每个客户端分别与服务端对话了,服务端要 同时处理多个对话了。 具体UDP编程要看资料了,百度上可以搜到,别人 只能替你点一点,不可能长篇大论的写

请教一个基于UDP的程序,多客户端对一服务端的

UDP因为是一种无连接的服务,没有服务器和客户端的概念,实际上只需要把数据发出去就可以了;

给你一个VB的程序参考下;

PublicClassUDPClient2015
PrivateDeclareSubSleepLib"Kernel32"(ByValNextRunProgramTimeAsMsAsLong)
DimremoteipAsString=""
DimlocalipAsString=""
DimcountAsInteger=0
PrivateSubForm1_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load
TextBox1.Text="10.33.132.25"
Button1.Text="发送"
Button2.Text="连接"
Button3.Text="一直发送"
EndSub
PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.Click
localip=UDPClient1.LocalIP
IfButton2.Text="连接"Then
remoteip=TextBox1.Text
WithUDPClient1
.Protocol=MSWinsockLib.ProtocolConstants.sckUDPProtocol
.RemoteHost=remoteip
.RemotePort=2014
.LocalPort=2015
.Bind(2015,localip)
EndWith
Button2.Text="关闭连接"
TextBox1.ReadOnly=True
Else
WithUDPClient1
.Close()
EndWith
Button2.Text="连接"
TextBox1.ReadOnly=False
EndIf
EndSub
PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click
UDPClient1.SendData(TextBox3.Text)
TextBox2.Text=TextBox2.Text&TextBox3.Text&vbCrLf
TextBox3.Text=""
EndSub
PrivateSubUDPClient1_DataArrival(ByValsenderAsObject,ByValeAsAxMSWinsockLib.DMSWinsockControlEvents_DataArrivalEvent)HandlesUDPClient1.DataArrival
DimstrDataAsString=""
UDPClient1.GetData(strData)
TextBox2.Text=TextBox2.Text&strData&vbCrLf
EndSub
PrivateSubButton3_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton3.Click
IfButton3.Text="一直发送"Then
Button3.Text="停止发送"
Timer1.Start()
Else
Button3.Text="一直发送"
Timer1.Stop()
EndIf
EndSub

PrivateSubTimer1_Tick(ByValsenderAsObject,ByValeAsSystem.EventArgs)HandlesTimer1.Tick
UDPClient1.SendData(200)
EndSub
EndClass

标签:udp 电脑网络 客户端 信息技术 C

大明白知识网 Copyright © 2020-2022 www.wangpan131.com. Some Rights Reserved. 京ICP备11019930号-18