0

我有一个非常简单的 C# 应用程序,它应该侦听 UDP 端口并将任何传入数据写入列表框。整个事情如下:

public partial class frmMain : Form
{
    UdpClient udpc = new UdpClient(44557);

    public frmMain()
    {
        InitializeComponent();
    }

    private void ReceiveCallback(IAsyncResult ar)
    {
        IPEndPoint ipep = null;
        var rcv = udpc.EndReceive(ar, ref ipep);
        string s = Encoding.ASCII.GetString(rcv);
        this.Invoke((Action)(()=>lsbLog.Items.Add(s)));
    }

    private void frmMain_Load(object sender, EventArgs e)
    {
        udpc.BeginReceive(new AsyncCallback(ReceiveCallback), udpc);
    }
}

它获取第一个数据包并记录它,但仅此而已。我如何“重置”它以继续接收?

4

1 回答 1

1

每个接收都以 a 开始BeginReceive并通过 完成EndReceive。您需要BeginReceive在第一次接收完成后再次调用才能继续接收入站数据。

在此处查看“处理收到的 UDP 数据包”以查看您需要的模式。

于 2013-02-11T20:20:04.780 回答