2013-02-11 2 views
0

UDP 포트에서 수신 대기하고 들어오는 데이터를 목록 상자에 쓰는 매우 간단한 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); 
    } 
} 

첫 번째 패킷을 가져 와서 기록하지만 그게 전부입니다. 계속 받기 위해 "재설정"하는 방법은 무엇입니까?

+0

@ JohnSaunders "태그"는 아니지만 질문의 일부입니다. 자신을 리셋하지 않는 UDP 소켓은 UDP의 일부가 아니라 C#의 UDP 클래스 디자인의 일부입니다. – baruch

+0

C#은 UDP를 지원하지 않습니다. 아마도 당신은 .NET UDP를 의미할까요? VB.NET에서 같은 것을 사용하면 "C# UDP"가 될 수 없습니다. –

답변

1

각 수신은 BeginReceive으로 시작하여 EndReceive을 통해 완료됩니다. 인바운드 데이터를 계속 수신하려면 첫 번째 수신이 완료된 후 BeginReceive으로 다시 전화해야합니다.

"받은 UDP 패킷 처리"here을 확인하여 필요한 패턴을 확인하십시오.