Я работаю над написанием простого клиентского приложения Redis в Objective-C. Чтобы общаться с Redis на моем сервере, мне нужно подключиться к серверу по SSH, а затем открыть сокет TCP для отправки данных туда и обратно. Я пытаюсь следовать примеру с libssh2.org, direct_tcpip.c
, и у меня получилось работать хорошо. Я могу запустить код, и он скажет:
Waiting for TCP connection on... 0.0.0.0:6379
Затем я пытаюсь связаться с ним с помощью telnet:
telnet 0.0.0.0 6379
Я могу успешно подключаться и взаимодействовать с Redis таким образом, ДА!
Теперь следующим шагом для меня является возможность программно общаться с сервером и отправлять ему команды из пользовательского интерфейса моего приложения, но программа блокируется, когда я вызываю accept()
, и застревает в ожидании подключения. Это проблема. потому что мне нужно программно подключиться к нему, и я не могу понять, как это сделать.
Я пытался позвонить libssh2_session_set_blocking(session, 0);
перед accept()
, но это ничего не изменило.
Моя цель — настроить переадресацию, чтобы мое приложение могло как можно проще взаимодействовать с удаленным сервером Redis, и я совершенно новичок в программировании сокетов. Мне нужен туннель SSH, потому что Redis не имеет встроенной системы безопасности, и рекомендуется использовать его для внутренней связи.
Спасибо всем, кто может указать мне в правильном направлении!