首先,对于已经解决此问题的方法感到抱歉。
我有一个连接到网络的UDP服务器,它是一个秤。它正在侦听发送给它的所有数据,并根据返回给客户端的命令将数据返回给客户端。我能够使用用于测试串行通讯的软件YAT对此进行测试。
我想创建一个执行相同功能的C#(.NET Core)控制台应用程序。基本上,我想连接到UDP服务器(秤),向它发送命令,并从中接收数据。但这似乎在接收端不起作用。
static void Main(string[] args)
{
var ipAddress = "10.130.12.81";
var portNumber = 2102;
var ipEndPoint = new IPEndPoint(IPAddress.Parse(ipAddress), portNumber);
try
{
var client = new UdpClient();
client.Connect(ipEndPoint);
if (client != null)
{
var weigh = "\nW\r";
var data = Encoding.ASCII.GetBytes(weigh);
client.Send(data, data.Length);
var receivedData = client.Receive(ref ipEndPoint);
Console.WriteLine($"Received Data: {receivedData}");
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
当我运行代码时,它可以连接并发送数据,但在客户端处于空闲状态。接收行,等待消息发送。
任何建议都会有所帮助。之前我没有使用过与UDP ip客户端和服务器相关的任何东西,这是我的第一次尝试。
[4/22/19]
这次我创建了2个控制台应用程序。
发件人
static void Main(string[] args)
{
var udpClient = new UdpClient();
var ipEndPoint = new IPEndPoint(IPAddress.Parse(_ipAddress), _port);
udpClient.Connect(ipEndPoint);
var msgSent = Encoding.ASCII.GetBytes("W\n");
udpClient.Send(msgSent, msgSent.Length);
}
接收器
static void Main(string[] args)
{
var udpServer = new UdpClient(2102);
var ipEndPoint = new IPEndPoint(IPAddress.Any, _port);
var msgReceived = udpServer.Receive(ref ipEndPoint);
Console.Write("received data from: " + ipEndPoint.ToString());
}
我试图多次运行和发送消息,但是没有运气。不知道我是否有任何遗漏..我会继续努力。如果这不起作用,我将尝试使用Socket类而不是UdpClient。