TCP-соединение iphone - PullRequest
       5

TCP-соединение iphone

3 голосов
/ 30 января 2011

Я хочу установить TCP-соединение между iphone и ПК.На ПК QTspServer запущен и работает (был протестирован с другим клиентским приложением).

Вот метод подключения, который я использую на iphone:

- (IBAction)connectToServer:(id)sender {
    CFReadStreamRef read = NULL;
    CFWriteStreamRef write = NULL;

    NSString *host = @"192.168.1.169";

    CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault, (CFStringRef)host, 1000, &read, &write);
    CFWriteStreamOpen(write);
    int k = 0;
}

Сервер на ПК не реагирует.Любая помощь уместна

Кстати: Сервер - это не что иное, как QTcpServer с добавленным методом incomingConnectionВот функция main на стороне сервера:

int main(int argc, char **argv)
{
QApplication app(argc, argv);
AbstractServer server;
server.listen(QHostAddress::Any, 1000);
QLabel label("Hello server");
label.setFixedSize(400, 400);
label.show();
return app.exec();
}

Ответы [ 2 ]

1 голос
/ 31 января 2011

Соединение устанавливается после того, как что-то было отправлено на сервер

0 голосов
/ 31 января 2011

Убедитесь, что write не равен NULL после вызова CFStreamCreatePairWithSocketToHost. Если это так, соединение сокета не удается .

-(IBAction)connectToServer:(id)sender {
    CFWriteStreamRef write = NULL;

    NSString *host = @"192.168.1.169";
    int port = 1000;
    CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault, (CFStringRef)host, port, NULL, &write);
    if (!write) {
        // connection failed.
        NSLog(@"Connection to %@:%d failed.",host,port);
    } else {
        CFWriteStreamOpen(write);
        // keep a reference to the output stream for later use.
        self.output = (NSOutputStream*)write;
        // the function that made the output stream has "Create" in its name, so
        // this method owns the write stream & should release it.
        CFRelease(write);
    }
}

Обратите внимание, что я сохраняю поток вывода в свойстве self. В вашем примере кода поток нигде не сохраняется. Вы не освобождаете его, поэтому он все еще существует, когда метод завершается, но нет доступа к нему. Если образец -connectToServer: является репрезентативным, эта ошибка не позволит вашему объекту отправлять что-либо на сервер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...