2013-02-11 110 views
0

我有一個非常簡單的C#應用​​程序,應該在UDP端口上偵聽並將任何傳入數據寫入列表框。整個事情如下: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); 
    } 
} 

它獲取第一個數據包並記錄它,但就是這樣。我如何「重置」它以繼續接收?

+0

@JohnSaunders它不是一個「標籤」,而是問題的一部分。 UDP套接字不能重置自己不是UDP的一部分,而是特別是C#的UDP類設計的一部分。 – baruch 2013-02-11 20:23:05

+0

C#沒有UDP支持。也許你的意思是.NET UDP?如果VB.NET使用相同的東西,它不能是「C#UDP」。 – 2013-02-11 20:23:42

回答

1

每個接收都以BeginReceive開始,並通過EndReceive完成。第一次接收完成後,您需要再次撥打BeginReceive才能繼續接收入站數據。

查看「處理收到的UDP數據包」here查看您需要的模式。