インターネット上にいくつかのクラスがあり、tcp接続を確立しました。リンクはhereです。私はクラスをカスタマイズしたいと思います。これまでのところ、データを送信してデータを受け取る接続を確立することができました。私は自分のアプリケーション上で、このクラスをたくさん使用するつもりですので、私は値を返す前に待ってください
-(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に応じて値を返します。
[oStream write:]が返され、intが返されたとき、私はそれが解決策である可能性があると考えました。しかし、何らかの理由で間違ったIPアドレスを提供したときにそれを実行しようとすると、何も返されません。それはちょうどそこに待っている。私は試し続けます... –
あなたはどれくらい待っていましたか?私が間違ったIPを提供するとしばらく時間がかかりますが、最後に-1を返します。 – Saphrosit
ええ、それは私の場合、なぜそれが永遠にかかるのか分かりません。私は2分待ってみましたが、アプリが凍ってから届きました。[oStream write:buf maxLength:strlen((char *)buf)];助けてくれてありがとうサフロジット –