Я нашел несколько классов в Интернете, чтобы установить соединение TCP. Ссылка в здесь . Я хочу настроить класс, и до сих пор я могу установить соединение, отправлять данные и получать данные, и это здорово. После того как я создал и импортировал классы, использованные в первой предоставленной мной ссылке, я могу установить соединение, используя следующий метод:
-(void) connectToServerUsingCFStream:(NSString *) urlStr portNo: (uint) portNo {
CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault,
(CFStringRef) urlStr,
portNo,
&readStream,
&writeStream);
if (readStream && writeStream) {
CFReadStreamSetProperty(readStream,
kCFStreamPropertyShouldCloseNativeSocket,
kCFBooleanTrue);
CFWriteStreamSetProperty(writeStream,
kCFStreamPropertyShouldCloseNativeSocket,
kCFBooleanTrue);
iStream = (NSInputStream *)readStream;
[iStream retain];
[iStream setDelegate:self];
[iStream scheduleInRunLoop:[NSRunLoop currentRunLoop]
forMode:NSDefaultRunLoopMode];
[iStream open];
oStream = (NSOutputStream *)writeStream;
[oStream retain];
[oStream setDelegate:self];
[oStream scheduleInRunLoop:[NSRunLoop currentRunLoop]
forMode:NSDefaultRunLoopMode];
[oStream open];
}
}
Поскольку я буду часто использовать этот класс в своем приложении, я создаю свой собственный класс и хочу создать метод -(BOOL) connect{}
. Я хочу вернуть да, если соединение установлено, и нет иначе. Проблема в том, что я могу определить, устанавливаю ли я соединение, путем создания соединения, пытающегося отправить данные, а затем на стороне сервера я создал метод, который при получении сообщения отправляет строку обратно. Если в течение следующих 2 секунд я получаю данные, я знаю, что соединение было установлено.
поэтому в моем методе подключения я хочу подождать 2 секунды, а затем вернуть значение в зависимости от того, является ли переменная BOOL didReciveData = YES.