2009-08-18 5 views
1

Symbian에서 일부 소켓 물건을 다루고 있습니다. 지금까지 잘 작동합니다. 그러나 전송 된 데이터를 읽으려고 할 때 이상한 문제에 직면하고 있습니다. 다음과 같이 코드가 보이는 가정 : 나는 정확히 145 바이트를받은하지만 두 경우 모두에서ReceiveOneOrMore가 Symbian에서 잘못된 길이를 반환합니다.

TSockXfrLength len; 

iSocket.RecvOneOrMore(buff, 0, iStatus, len);  
User::WaitForRequest(iStatus);     
if (iStatus == KErrNone) 
{ 
    printf(_L("Bytes received 1st try %4d..."), len); 
    printf(_L("Bytes Length received 2nd try %4d..."), &len); 
} 

출력은 7450과 함께 무언가이다. 네트워크 분석기로 확인할 수 있습니다. 누구나 내가 뭘 잘못하고 있는지 알고있다. 받은 올바른 바이트를받지 못 했습니까?

편집 :

나는 다음과 같은 방법으로 소켓에 연결하고 : TInetAddr serverAddr;
TUint iPort = 445; 도움이

TRequestStatus iStatus; 
    TSockXfrLength len; 

    TInt res = iSocketSrv.Connect(); 

    res = iSocket.Open(iSocketSrv,KAfInet,KSockStream, KProtocolInetTcp); 

    serverAddr.SetPort(iPort); 
    serverAddr.SetAddress(INET_ADDR(192,100,81,54)); 

    iSocket.Connect(serverAddr,iStatus); 

    User::WaitForRequest(iStatus); 

희망)

감사

+0

어떻게 소켓을 연결하고 있습니까? – laalto

+0

요청에 따라 소켓에 연결하기위한 코드를 추가했습니다. –

답변

2

TSockXfrLength 유형은 실제로 TPckgBuf<TInt>.이의 형식 정의입니다

printf(_L("Bytes received 1st try %4d..."), len()); 

시도는에서 임의의 간단한 데이터를 저장하는 심비안 설명자 방법입니다 8 비트 디스크립터. len 객체에서 값을 가져 오려면() 연산자를 사용해야합니다.

TPckg * 클래스에 대한 자세한 내용은 symbian 개발자 라이브러리에서 제공됩니다.

+0

고마워요, 지금 작동합니다! –

관련 문제