私はJavaサーバーを持っています。私はサーバーに接続するIPhoneアプリケーションを構築しようとしています。また、メッセージを送受信します。私はCFReadStreamRefとCFWriteStreamRefの使用についてちょっと混乱しました。どうすればソケットとストリームを正常にペアリングできますか。これは私が持っているものです:私は、ストリームからの書き込みまたは読み取りしようとすると、BSDソケットCFReadStreamRefとCFWriteStreamRef
fd = socket(AF_INET, SOCK_STREAM, 0);
emset(&addr, 0, sizeof(addr));
addr.sin_len = sizeof(addr);
addr.sin_family = AF_INET;
addr.sin_port = htons(port);//0;
inet_aton("192.168.1.101", &addr.sin_addr.s_addr);
CFSocketContext context = { 0, self, NULL, NULL, NULL };
listeningSocket = CFSocketCreateWithNative(NULL, fd,kCFSocketConnectCallBack, AcceptCallback, &context);
CFDataRef connectAddr = CFDataCreate(NULL, (unsigned char *)&addr, sizeof(addr));
CFSocketConnectToAddress(self.listeningSocket, connectAddr, -1);
// As soon as i get the Connect call back into my function I try to pair the streams to the socket
CFReadStreamRef readStreamm;
CFWriteStreamRef writeStreamm;
CFStreamCreatePairWithSocket(NULL, CFSocketGetNative(listeningSocket), &readStreamm, &writeStreamm);
[readStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[writeStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[readStream open];
[writeStream open];
ただし、エラーを返して(-1)。 readStream
またはwriteStream
open
を使用し、成功した場合はもう1つ質問します。それは私がすでにサーバーに接続しているということですか?または私は実際にCFSocketConnectToAddress
に電話する必要がありますか?私はconnectToAdderssとストリームの両方を使用する必要があるかどうかを判断しようとしています。あるいは、どちらか一方を使うべきです。
ありがとうございます。