我通過UDP協議從一個c-節目接收I過程的字符串,並以我的函數使用它的數據時,將數據發送到另一如何收到UDP數據而不堆疊舊數據
, 問題是如果由於我的函數需要更多時間來完成,如果我沒有時間來接收新數據,數據將會堆疊,然後我將不得不處理舊數據而不是處理最近的數據,這是我的實際目標實時處理
任何人都可以幫助我嗎?
這是我的接收代碼:
addr_len = sizeof their_addr;
if ((numbytes = recvfrom(sockfd, ubuf, 6 , 0,(struct sockaddr *)&their_addr, &addr_len)) == -1)
{
perror("recvfrom");
//exit(1);
}
inet_ntop(their_addr.ss_family,get_in_addr((struct sockaddr *)&their_addr),s, sizeof s);
//printf("listener: packet is %d bytes long\n", numbytes);
ubuf[numbytes] = '\0';
printf("listener: packet contains \"%s\"\n", ubuf);
+1,我想寫的完全一樣。 – 2013-03-26 09:16:36
謝謝,我其實是在研究多線程,但由於我從來沒有采取過這種方法,我想看看是否還有什麼我可以做丟棄舊包,順便說一下,我的實時並不是真的,但我有儘可能準確,因爲我正在控制步進電機,再次感謝 – Elie 2013-03-26 09:16:45
當使用udp時,有沒有辦法清除或沖洗輸入緩衝區? – Elie 2013-03-26 09:58:26