2014-07-15 6 views
2

현재 라이브 스트리밍 SDK의 Android 버전을 WP 8.1 버전으로 이식하는 프로젝트를 진행 중입니다. 소켓 스트림을 통해 서버 (서버 B)에 대한 경로 목록을 요청하려고합니다. 내가 초기 길이를 알 수 없기 때문에, 내가 바이트 당을로드하고있어LoadAsync WP8.1 : 부분 결과

DataReader reader = new DataReader(socket.InputStream); 
reader.InputStreamOptions = InputStreamOptions.Partial; 
List<byte> byteList = new List<byte>(); 
while (true) 
{ 
    uint bytesAvailable = await reader.LoadAsync(1); 
    if (bytesAvailable == 0) break; 
    byte[] arrayByte = new byte[bytesAvailable]; 
    reader.ReadBytes(arrayByte); 
    for (int j = 0; j < arrayByte.Length; j++) 
    { 
     byteList.Add(arrayByte[j]); 
    } 
} 

: 여기 내가 그것을 할 방법이다. 전화 할 때

byteList.Count(); 

항상 부분 결과 인 16을 반환합니다.

이상하게 충분히, 나는 그것은 하나의 이동에 전체 바이트를로드

// Read from the stream socket 
DataReader msgToRead = new DataReader(socket.InputStream); 
msgToRead.InputStreamOptions = InputStreamOptions.Partial; 
uint bytesAvailable = await msgToRead.LoadAsync(224); 
byte[] byteArray = new byte[bytesAvailable]; 
msgToRead.ReadBytes(byteArray); 
byteList = byteArray.ToList(); 

채널 목록을 얻으려면 다른 서버 (서버 A)에서 바이트를 수신 시도했다.

나는 서버 B와 상호 작용하는 코드의이 부분을 적용하려고했으나 byteList 아직도 내가 무엇을해야합니까 (16)

의 길이를 반환?

+0

'LoadAsync'가'0'을 반환하면, 그것은 데이터의 끝입니다. 가장 좋은 방법은 서버 B를 확인하고 16 바이트를 초과하여 전송하는지 확인하는 것입니다. –

답변

0

나쁨. 이것은 내 실수입니다. 따라서 서버 작동 방식은 SDK/클라이언트 응용 프로그램의 요청 메시지 (채널 ID 쿼리)를 기반으로 응답을 배포합니다. 잘못된 채널 ID를 요청했기 때문에 서버가 예상대로 응답하지 않았습니다.

나를 도와 줘서 고맙습니다.