私はUDPを初めて使用しています。テスト環境を使用して、私は単一のUDPメッセージを送受信できます。しかし、私は複数のUDPメッセージを受信する方法を理解しようとしています。 MyListenerサービスは、送信するたびに、一日中UDPパケットを受信するようにしたいと思います。私はどんな助けにも感謝します。UDPの送信/受信
PS - 私がDoSomethingWithThisTextの周りに(真)を入れておけば、それはデバッグ中に動作します。しかし、MyListenerをサービスとして実行しようとすると動作しません。なぜなら、Startはwhile(true)ループを通過することはないからです。
マイリスナー・サービスは、次のようになります...
public class MyListener
{
private udpClient udpListener;
private int udpPort = 51551;
public void Start()
{
udpListener = new UdpClient(udpPort);
IPEndPoint listenerEndPoint = new IPEndPoint(IPAddress.Any, udpPort);
Byte[] message = udpListener.Receive(ref listenerEndPoint);
Console.WriteLine(Encoding.UTF8.GetString(message));
DoSomethingWithThisText(Encoding.UTF8.GetString(message));
}
}
私の送信者は、次のようになります。
static void Main(string[] args)
{
IPAddress ipAddress = new IPAddress(new byte[] { 127, 0, 0, 1 });
int port = 51551;
//define some variables.
Console.Read();
UdpClient client = new UdpClient();
client.Connect(new System.Net.IPEndPoint(ipAddress, port));
Byte[] message = Encoding.UTF8.GetBytes(string.Format("var1={0}&var2={1}&var3={2}", new string[] { v1, v2, v3 }));
client.Send(message, message.Length);
client.Close();
Console.WriteLine(string.Format("Sent message");
Console.Read();
}
ここではリソースリークはありません。あなたが 'EndReceive'を呼び出したので、各読み取り操作に関連するすべてのリソースが正しくクリーンアップされます。最近、 'ReadAsync'が望ましいかもしれないことに注意してください。 –