如何通过UDP将数据从服务器传递到客户端?

问题描述:

为什么不能正常工作?如何通过UDP将数据从服务器传递到客户端?

  Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); 
     IPEndPoint ipserv = new IPEndPoint(IPAddress.Parse("46.174.48.47"), 46535); 
     IPEndPoint ipLoc = new IPEndPoint(IPAddress.Parse("86.64.47.13"), 755); 
     client.Connect(ipserv); 
     byte[] data = Encoding.UTF8.GetBytes(Console.ReadLine()); 
     client.Send(data); 
     client.Bind(ipLoc); 
     client.Receive(data); 
     Console.WriteLine(data); 

错误: 型“System.Net.Sockets.SocketException” System.dll中 附加信息的未处理的异常:收到无效的参数

我从控制台发送到服务器的文本,然后想要从服务器上取回它。怎么做?

+0

服务器在ipLoc上发送数据 –

我认为服务器和客户端的IPAndress是一样的

+0

端口是相同的。 –

你并不特定发生异常的位置。但是,看代码,我猜想它发生在client.Bind()方法调用上。原因在于,当您拨打client.Send()时,网络层在此时为您的套接字分配一个端口号。然后尝试拨打Bind()来分配本地IP地址和端口号将会失败,因为端口号无法更改并且已被分配。

你的问题是在细节上稀疏,但我会建议你不要用ipLoc在所有的麻烦。只有服务器端点需要有固定的端口号。最好让客户端套接字使其端口(和IP地址)由网络层隐式分配。

如果这不能解决您的问题,请改进问题,以便它包含一个很好的Minimal, Complete, and Verifiable code example,它可以可靠地重现问题,并更详细地解释发生了什么。确保包含任何错误消息的确切文本以及任何抛出异常的完整堆栈跟踪。