2013-08-27 1 views
0

서버에서 정보를 수신하고 사용자에게 해당 정보를 화면에 표시하는 응용 프로그램이 있습니다. 많은 정보가 있기 때문에, 나는 정보를받을 때 UI를 업데이트하고 싶습니다.UI 업데이트 중 여러 개의 UDP 패킷 수신

송수신은 별도의 스레드에서 수행됩니다.

두 질문 :

  1. 가 어떻게 최고의 여러 UDP 패킷을받을 수 있습니까? 한 패킷

    try { 
    Log.i(TAG,"Listening..."); 
    _dcOut.setSoTimeout(20000); 
    _dcOut.receive(packet);/* Wait to receive a datagram */ 
    haveDatagram = true; 
    Log.d(TAG,"dc_out, received..."); 
    } 
    catch (Exception e) { // can be just a time out 
    haveDatagram = false; 
        Log.d(TAG,"dc_out, failed to receive..."); 
    } 
    
  2. 를 수신 나의 현재 코드는 다수의 UDP 패킷을 수신하면서 UI를 업데이트 할 수 있는가?

편집 : 서버에서 정보를 얻을 수 바운드 서비스를 사용하고 (AIDL 특정 예정).

어느 I : 다음은 설정입니다 1. 개별 객체를 얻고 다시 보내고 그 서비스 나 2의 특정 예를 들어 내가 그 서비스에 대한 그들의 목록을 다시 보낼 수있어

제 생각으로 말하자면 5 ~ 10 개 개체의 목록을 보내야하고 잠시 동안 반복해야합니다. 이 서비스 패킷을 수신하는 동안 나를 UI를 업데이트 할 수있는 방법이없는 것처럼

이라면 .. 닥터 버크 느낄 setup-- UDP 패킷의 수신이있다, 별도의 스레드에서 수행하는 경우

답변

1

GUI에 문제가 나타나지 않아야합니다!

코드에 수신되는 UDP 데이터 만 표시됩니다. 구체적으로 더 많은 정보가 필요합니다.

특정 포트에서 들어오는 데이터를 처리하는 UDPSocket은 하나 뿐이며, 모든 특정 (패킷) 버퍼는 해당 특정 프로세스 전용 버퍼에 순차적으로 저장됩니다.

+0

버퍼에 저장하는 방법에 대해 설명해 주시겠습니까? 이것은 패킷의 arraylist와 같은 의미이며 목록에 추가 될 때리스트에서 제거하고 처리하는 것입니까? – benzabill

+0

Java 버퍼는 보통 대기열로 구현됩니다. 선입 선출 우선 –

+0

몇 가지 추가 정보가 게시되도록 게시물을 편집했습니다. – benzabill