2012-09-28 3 views
0

이 내용은 다음과 같습니다.IOS : AsyncSocket - readData 메서드의 호출 메커니즘

AsyncSocket을 사용하여 서버에 연결했습니다. 서버가 클라이언트에 at a time 몇 바이트를 보낼 때 응용 프로그램은 (onSocket: didReadData: withTag:) 메소드를 호출합니다. 때로는 네트워크 또는 기타 이유로 인해 일부 바이트가 도착하고 나머지 바이트가 나중에 도착했습니다 (즉, 일부 바이트가 지연됨을 의미). (timeOut = -1)

============ ========================

질문 : (onSocket: didReadData: withTag:) 얼마나 많은 시간이 소요 되었습니까?

1) 한 번만 - 바이트가 완료 될 때까지

2) 2 회 이상 자동으로 대기 - 일부는()를 호출 도착, 다른 하나는과 같이 ,,,,, (호출) 도착?

===================================는

생각이 맞다? plz geiv 나 조언. 매우 감사합니다.

답변

0

좋아요, 아마도 이것과 같습니다.

TCP에서 데이터 전송 : 한 번에 1000 바이트를 전송할 때 지연이나 기타 이유로 인해 900 바이트가 먼저 수신 될 수 있지만 TCP 소켓은 나머지 100 바이트를 자동으로 대기합니다. . 따라서 asyncSocket을 사용하여 데이터를 전송하고 시간 제한을 설정하면이 초 동안에는 지연된 데이터를 처리 할 필요가 없습니다.

=========================

편집

어쩌면 THS 질문의 제목은 적절하지 않다 아무도 그 질문에 관심이 없다.

대신 -readDataToLength: 메서드를 사용하여 데이터의 header.length를 먼저 읽고 구문 분석 한 다음 body.length of data;