2012-01-17 2 views
0

C#으로 응용 프로그램을 만들고 있습니다. 나는 지속적으로 24097 포트에서 데이터를 가져 오는, 그리고 난UDP 프로토콜을 사용하여 패킷을 순차적으로 가져 오는 방법은 무엇입니까?

UdpClient client = null; 
IPEndPoint ipep = null; 
client = new UdpClient(24097); 
client.Client.ReceiveBufferSize = 25000; 
ipep = new IPEndPoint(IPAddress.Any,24097); 
while(flag) 
{ 
    byte[] data= = client.Receive(ref ipep); 
} 

로 데이터를 기록하고있다하지만 내 문제는 순서에없는 어떤 내가 무엇입니까 패킷입니다. 나는 순차적 인 방법으로 그것들을 받고 싶다. 도와주세요. 미리 감사드립니다.

답변

5

UDP는 보내는 데이터의 순서에 대해 어떠한 보증도하지 않습니다. 그것은 "화재와 잊기"입니다. 순서가 지정된 스트림에 데이터를 보관해야하는 경우 TCP를 사용해야합니다.

그렇지 않으면 데이터 그램 자체에 일종의 시퀀스 ID를 구현해야합니다.

+0

: 감사합니다.하지만이 패킷의 시퀀싱을 원한다면 어떻게 할 수 있습니까? – Dany

+0

필자가 대답 한대로, 들어오는 UDP 패킷의 순서를 알아야 할 경우 데이터 그램 자체에 시퀀스를 나타내는 정보 (데이터) *가 있어야합니다. UDP 프로토콜은 데이터 그램이 전송 된 순서를 알 수있는 방법을 제공하지 않습니다. 시퀀스 번호에 대해 데이터 그램의 처음 두 바이트를 사용하는 것과 비슷합니다. 클라이언트는 매번 1 씩 증가시킵니다. –

1

이 링크는이 샘플은 두 부분으로 구성되어 있습니다

http://www.codeproject.com/Articles/176722/Sending-messages-to-workstations-using-Socket-Prog/?display=PrintAll&fid=1618703&df=90&mpp=25&noise=3&prof=False&sort=Position&view=Quick

도움이 될 수 있습니다. 첫 번째는 발신자 (일부 PC)이고 다른 하나는 수신자 (클라이언트 PC)입니다. 발신자에 언급 된 포트는 수신자에 언급 된 포트와 같아야합니다.

보낸 사람 응용 프로그램에는 텍스트 상자와 단추 (보내기) 단추가 있습니다. 두 프로젝트를 각각의 PC에서 실행하십시오.

보낸 사람의 보내기 단추를 클릭하면 텍스트 상자의 데이터가 수신기로 순차적으로 전송됩니다.

희망이 있습니다. 고맙습니다.

관련 문제