在我所有的IP上发送一个UDP组播数据包
我正在尝试在所有网络接口(2 LAN,一个WiFi)上发送多播数据包.我首先遵循此教程. 我遇到的问题是,该数据包似乎只有我的一个IP地址之一. 这是我当前的代码. private static void SendOnAllCards(int port, String address) { using (Socket mSendSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp)) { mSendSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(IPAddress.Parse(address)));
16 2024-04-26
编程技术问答社区
UDP客户只收到1条信息
我有一个我当前正在处理的服务器客户端应用程序.服务器在WAN上接收数据罚款,并且客户端似乎接收数据,但客户端仅接收一个通信. WAN上是否有任何使客户始终仅接收第一个返回UDP通信,而后续的则没有.谢谢您的帮助. 客户端UDP听力代码 private void receiveUDP() { System.Net.IPEndPoint test = new System.Net.IPEndPoint(System.Net.IPAddress.Any,UDP_PORT_NUMBER); System.Net.EndPoint serverIP = (System.Net.EndPoint)test; server.Bind(serverIP); //server.Ttl = 50; EndPoint RemoteServ = (EndPoint)listenUDP; do
14 2024-04-26
编程技术问答社区
在C#中处理另一个线程中收到的UDP数据
我有一个类,该类包含一种在单独线程中接收UDP数据的方法.我这样做是为了避免拖延的主要应用程序(以Unity3d运行). 我需要将在单独线程中接收到的数据传递给另一类,该类在原始线程上运行,因此能够与Unity3D进行交互. 这大致是Udproceiver的样子: public class UDPReciever { //... public UDPReciever() { m_Port = 12345; m_Worker = new Thread(new ThreadStart(recvData)); m_Worker.IsBackground = true; m_Worker.Start(); } void recvData() { m_UDPClient = new UdpClient(m_Port); while (true) {
14 2024-04-26
编程技术问答社区
UDP插座C#.NET
我正在使用.NET中的UDP套接字;特别是我制作了一个程序,该程序由UDP套接字从图片框发送到其他程序. 这是代码: 这是插座从端口8000接收图像的听众部分 private void Listening() { IPEndPoint ipep = new IPEndPoint(IPAddress.Loopback, 8000); Socket newsock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); newsock.Bind(ipep); int recv; IPEndPoint sender1 = new IPEndPoint(IPAddress.Parse("
4 2024-04-26
编程技术问答社区
C# UDP套接字应用程序听从各种套接字的消息
我有一个系统监视器应用程序,需要收听另一台计算机上各种UDP插座的消息.其他插座不断向给定的IP/端口发送心跳. 在调用begineReceivefrom时会引发此异常: "由于未连接插座,并且(使用sendto呼叫在数据报插座上发送时,请求发送或接收数据的请求. 我不必致电连接,因为数据已经发送到此IP端点.加上数据来自各种插座. private Socket m_socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); private void Window_Loaded(object sender, RoutedEventArgs e) { // bind socket // Establish the local endpoint for the socket. // Dns.GetH
14 2024-04-25
编程技术问答社区
C# UDP监听器线程-Don't Burn CPU with while(true)?
使用以下代码,是否有一种更好的方法来设置UDP收听,而不是while(true)使用Thread.Sleep(10)? public void Start() { socket.Bind(ip); while (true) { data = new byte[1024]; receivedDataLength = socket.ReceiveFrom(data, ref Remote); raw = Encoding.ASCII.GetString(data, 0, receivedDataLength); row = new LogRow(raw); //Console.WriteLine(row.ClientIp); row_queue.Enqueue(row);
6 2024-04-25
编程技术问答社区
C# UDP广播客户/服务器不工作
我正在使用.NET 2.0,并创建了一个相当简单的UDP广播应用程序和UDP侦听器. 听众代码: Socket listener = new Socket( AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp ); IPEndPoint localEndPoint = new IPEndPoint( IPAddress.Any, 11000 ); listener.Bind( localEndPoint ); EndPoint ep = (EndPoint)localEndPoint; Console.WriteLine("Ready to receive…"); byte[] data = new byte[1024]; int recv = listener.ReceiveFrom(data, ref ep); string stringData = Encoding.ASCII.GetString
8 2024-04-25
编程技术问答社区
C#应用程序根本无法接收UDP数据
我正在尝试做一些不起作用的事情:使用我的C#应用​​程序,我只想在特定端口上收听UDP软件包.有了Wireshark,我可以很好地看到,我想要的包裹非常好(CRC和一切都可以). 但是,我在互联网工作中没有找到任何代码.例如,这也失败了: private void ReceiveAsync() { UdpClient Client = new UdpClient(new IPEndPoint(IPAddress.Any, 51200)); try { Client.BeginReceive(new AsyncCallback(OnReceive), null); } catch (Exception e) { System.Windows.Forms.MessageBox.Show(e.Message);
12 2024-04-24
编程技术问答社区
UDP广播系统不会在独立的计算机上进行通信
我正在开发C#中的广播信标,该信标应该将服务器信息广播到所有侦听设备.发送的信息将包含信息,例如WCF服务的URL,命名空间,所需的参数等.我现在拥有的是发送者和接收器,当它们在同一台计算机上时可以很好地说话.但是,一旦我将发件人放在另一台计算机上,而接收器将发送消息,但我的接收器永远不会得到.没有例外,并且在两台机器上都禁用了防火墙. 发件人: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.Net.Sockets; namespace UDPTest { class Program { static void Main(string[] args) { Socket sock = new Socket(Address
12 2024-04-24
编程技术问答社区
字节阵列到UDP数据包的结构
我目前被我的项目陷入困境.我目前从游戏中收到UDP数据包.这些数据包包含字节阵列.这些字节阵列需要转换为结构. 我已经解决了这个问题以前的问题: f1 2019 UDP解码 我有一部分工作.我使用此代码将字节数组转换为结构: PacketHeader ByteArrayToPacketHeader(byte[] bytes) { GCHandle handle = GCHandle.Alloc(bytes, GCHandleType.Pinned); PacketHeader stuff; try { stuff = (PacketHeader)Marshal.PtrToStructure(handle.AddrOfPinnedObject(), typeof(PacketHead
6 2024-04-24
编程技术问答社区
TcpClient 和 UdpClient 引发错误
在两个运行Windows 7 x64和VS2012 U1和使用.NET 4的系统上,如果我调用UDPCLIENT或TCPCLIENT. 我已经尝试了许多端口,并且已经验证了端口尚未绑定,但我每次都会遇到相同的错误. 我还尝试运行具有提升特权的代码,无济于事. 测试代码: try { using (UdpClient client = new UdpClient(new IPEndPoint(IPAddress.Any, 123))) { Console.WriteLine("Port is open"); } } catch (SocketException error) { Console.WriteLine("Error:\n{0}", error.Message);
16 2024-04-24
编程技术问答社区
进行代理连接(客户端/服务器都在NAT下)。
我想让一个代理服务器在NAT后面运行. (好吧,我可以在路由器中配置端口转发,但我希望立即!) 因此,可以说A想要使用运行代理服务器的BS. A/B在带有NAT的路由器后面.所以现在怎么办? A呼叫服务器S,让他知道他想要与B的代理连接,而B确实告诉S他准备连接. 因此,S以某种方式交换IPS/端口,以便A/B可以发送UDP软件包以获得连接(孔双关). 我到现在吗? ive阅读abou stun(我真的会为我提供很多帮助!因为我的研究,现在要花很长时间. id花费超过30h来获取信息,并且没有提出至少一个想法! 也确实想要其他/更好的解决方案:)请帮助我. 喜欢语言C#. 解决方案 我写了一章,介绍了可在Scribd在线阅读的实用JXTA II书中的Nat Traversal.它描述了可用的不同技术.这可能是您项目的好起点.
12 2024-04-24
编程技术问答社区
在主线程中获取UdpClient的接收数据
我正在尝试将LAN服务器发现添加到我的Unity游戏中.我正在使用UDP来广播请求.如果网络上的任何人是服务器,他们将使用一些服务器数据响应.我已经找到了这部分,但是我需要使用一些统一功能(其中包括其他自定义Monobehaviour脚本)来生成数据包数据. Unity将不允许从主线程以外的任何线程访问其API. 我正在使用 udpclient.beginreceive , udpclient.endreceive , asynccallback 流动.因此,接收的Asynccallback函数(AsyncRequestReceiveData在下面的示例脚本中)在另一个线程中运行,该线程不允许我使用任何统一函数. 我使用 Flamy作为我脚本的基础. 当脚本听到请求时,我尝试在AsyncRequestReceiveData中进行委托和事件,但似乎在同一单独的线程中触发. 单独线程在主线程中发射的事件会很好,但是我不确定如何完成. 尽管脚本从MonoBe
6 2024-04-24
编程技术问答社区
问题 试图将数据包单播到可用的网络上
试图将数据包与可用网络打开.共有3个网络.设法仅在一个网络中获取数据包.但是我无法在不同网络中接收数据包. 使用此代码.. foreach (var i in System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()) { foreach (var ua in i.GetIPProperties().UnicastAddresses) { System.Windows.Forms.MessageBox.Show(ua.Address.ToString()); IPAddress Tip = IPAddress.Parse(ua.Address.ToString()); IPEndPoint targetEndPoin
10 2024-04-24
编程技术问答社区
net.core的log4net配置文件,带有UDP 动态添加远程地址
我有一个log4net文件,其中添加了以下内容: 我希望能够通过startup.cs页面从我的appsetting.json文件中注入remoteadDress变量. 但是我收到以下错误: log4net:错误无法创建[log4net.appender.udpappender]类型的appender [udpappender].报告的错误如下. log4nnet.util.typeconverters.conversionnotsupportedException:无法从类型[System.String] value [%propery {remoteadDress}]转换为type [system.net.ipaddress] ----> system.net.net.net.sockets.socketsexception:没有这样的主机是这样已知 在system.net.dns.internalgethostbyname(字符串主机名,boolean incressipv6)
10 2024-04-24
编程技术问答社区
具有多个发送方和一个单一接收方的UDP
在一个项目中,我有多个UDP数据发件人,但只有一个接收器. 如果流量越高,接收器会"忘记"很多数据包.我知道这是UDP固有的问题,但我想最大程度地减少丢失的数据包的数量. 我读过 this 这是我的代码(请原谅大规模的代码块,但我希望示例是自由包含的) 发件人侧: public class UdpSender { private static int portNumber = 15000; public void Send(string data) { var udpServer = new UdpClient(); var ipEndPoint = new IPEndPoint(IPAddress.Broadcast, portNumber); byte[] bytes = Encoding.ASCII.GetBytes(data); udpServer.Send(byt
26 2024-04-23
编程技术问答社区
正确使用UDP DatagramSocket
我在我的基类中有以下代码(下面提供的剪切)来处理UDP插座.我正在添加对WinRT的支持(由#Define为WinRT控制).我有适用于.NET的所有功能,但是我的WinRT实现出了问题.当我发送数据时,没有在服务器端收到它.知道怎么了?我看不到客户端的任何错误,只是服务器上什么都没有出现.我已经成功地使用了DataWriter以类似的方式使我的TCP插座类工作. public UdpSocketClient(IPEndPoint remoteEndPoint, int localPort) { this.remoteEndPoint = remoteEndPoint; #if WINRT this.socket = new DatagramSocket(); this.socket.MessageReceived += ReceiveCallback;
8 2024-04-23
编程技术问答社区
当wire-shark关闭时,不能接收UDP包。
这是我在这里的第一篇文章. 我有一个嵌入式以太网PIC32 UC,它正在一个特定端口上向我的C#程序发送UDP软件包. 使用C#,我想捕获此软件包如下: UdpClient udpClient = new UdpClient( 20011 ); IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0); while (true) { byte[] content = udpClient.Receive(ref sender); } 一个包裹看起来像这样(Wireshark): 资料来源:192.168.1.38目标:192.168.1.44协议:UDP长度:122源端口:1000目标端口:20011 有趣的部分是,只要汇合软件在后台运行,一切都可以正常工作!我停止在C#中不再收到的钢丝鲨鱼. 有人知道这里发生了什么吗? 感谢您的回答 克里斯
12 2024-04-23
编程技术问答社区
如何设置UDP插座下的缓冲区大小?
众所周知,我们对UDP接收,我们使用socket.receivefrom或udpclient.receive socket.receivefrom接受您的字节数组,将UDP数据放入. udpclient.receive直接返回一个字节数组,其中数据为 我的问题是如何在套接字内设置缓冲区大小.我认为,操作系统为接收UDP数据保留了自己的缓冲区,对吗?例如,如果将UDP数据包发送到我的计算机,则操作系统会将其放在缓冲区上,然后等待我们到socket.receivefrom或udpclient.receive,对吗? 如何更改该内部缓冲区的大小? 我尝试过插座.ReceiveBuffSize,它对UDP根本没有影响,并且清楚地说它是针对TCP窗口的.我也做了很多实验,证明了套接字.ReceiveBufferSize不适合UDP. 任何人都可以为UDP内部缓冲区分享一些见解吗? 我在这里看到了一些帖子,例如, dave说socket.Receive
10 2024-04-23
编程技术问答社区
点对点网络的应用程序的网络发现
我希望有两个类,一个服务器类和一个客户端类.服务器类应收到每个新客户端的IP地址和端口号,并将其存储在列表中.它应该为每个客户提供连接的客户列表及其IP地址列表.然后,客户可以使用TCP连接相互通信. 抓住是客户不知道服务器的IP地址.但是,整个程序将在局域网上运行.我的猜测是它需要某种UDP广播,但是每次我尝试强加此操作时,除非程序的两个实例在同一台计算机上运行. 该应用程序将由有限的计算知识的客户安装,因此应该是将程序安装在所有计算机上并插入网络的情况. 如果有人使用c#.net 3.5或更早地对此有可靠的,清晰的强度,这将不胜感激. 解决方案 您可能想或可能不想使用其他解决方案 不确定这是否会为您提供帮助 -
10 2024-04-23
编程技术问答社区