C# " System.Net.Sockets.SocketException: '请求的地址在其上下文中无效。' “

问题描述 投票:0回答:0

我正在尝试通过 UDP 发送和接收一些整数。如果我使 IPAddress.Parse("127.0.0.1") 一切都很好,我不会遇到任何困难。但是,如果我创建 IPAddress.Parse("192.168.2.44") ,我会收到名为 “ System.Net.Sockets.SocketException:‘请求的地址在其上下文中无效。’ “ 在我绑定套接字的线上。

这里是发件人代码;

Socket clientSocket = new Socket(SocketType.Dgram, ProtocolType.Udp);
IPAddress clientIP = IPAddress.Parse("192.168.2.44"); // 
IPEndPoint clientEndPoint = new IPEndPoint(clientIP, 273);
clientSocket.Bind(clientEndPoint);          
IPAddress serverIP = IPAddress.Parse("192.168.2.44");
IPEndPoint serverEndPoint = new IPEndPoint(serverIP, 673);
byte[] bytesToSend = BitConverter.GetBytes(24);
clientSocket.SendTo(bytesToSend, serverEndPoint);
clientSocket.Close();

这里是接收者代码;

Socket serverSocket = new Socket(SocketType.Dgram, ProtocolType.Udp);
IPAddress serverIP = IPAddress.Parse("192.168.2.44");
IPEndPoint serverEndPoint = new IPEndPoint(serverIP, 673);
serverSocket.Bind(serverEndPoint);
byte[] receivedBytes = new byte[4];
serverSocket.Receive(receivedBytes);
richTextBox1.AppendText("\n");
richTextBox1.AppendText(BitConverter.ToInt32(receivedBytes).ToString());
richTextBox1.ScrollToCaret();
serverSocket.Close();

我以某种方式设法使用 Connect 而不是 Bind 通过 UDP 发送 int。

这是代码;

Socket clientSocket = new Socket(SocketType.Dgram, ProtocolType.Udp);
IPAddress clientIP = IPAddress.Parse("192.168.2.44"); // 
IPEndPoint clientEndPoint = new IPEndPoint(clientIP, 273);
clientSocket.Connect(clientEndPoint);          
IPAddress serverIP = IPAddress.Parse("192.168.2.44");
IPEndPoint serverEndPoint = new IPEndPoint(serverIP, 673);
byte[] bytesToSend = BitConverter.GetBytes(24);
clientSocket.SendTo(bytesToSend, serverEndPoint);
clientSocket.Close();

这是有效的,完美地发送了数据,但它不适用于接收者代码。

PS:有没有什么办法可以把整数值发送到“192.168.2.44”IP? 我不应该使用 IPAddress.Any 或 0.0.0.0. 或者有什么方法可以调用其他编程语言函数来从该 IP 地址获取值,然后将结果传递给 C#?

c# visual-studio user-interface udp receiver
© www.soinside.com 2019 - 2024. All rights reserved.