0

things are like this:

I used AsyncSocket to connect with server. when the server send some bytes to client at a time, app will invoke (onSocket: didReadData: withTag:) method; Sometimes, because of the network or other reason, some bytes arrived and the rest bytes arrived later( which means some bytes are delayed).(timeOut = -1)

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

Question: how much times did the method(onSocket: didReadData: withTag: ) invoke?

1)only one time - it will wait automatically until the bytes are complete?

2)2 or more times - some arrived(invoke), other arrived(invoke)、、、、、like so?

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

which thoughts is right? plz geiv me some advice. Thanks very much.

traximus
  • 177
  • 3
  • 15

1 Answers1

0

OK, maybe it's just like this.

Transfer data on TCP: when you send 1000 bytes at a time, because of lag or other reasons, you may receive the 900 bytes first, but the TCP socket will wait the rest 100 bytes automatically. So if I use asyncSocket to transfer datas and set the timeout, during these seconds, I don't need to deal with the lagged data.

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

EDIT

maybe the title of ths question is not appropriate, no one cares the question.

I used the method -readDataToLength: instead, first read header.length of data, and parse it, then read the body.length of data;

traximus
  • 177
  • 3
  • 15