0

私はObjective-Cで簡単なRedisクライアントアプリケーションの作成に取り組んでいます。サーバー上のRedisと通信するには、サーバーにSSHで接続し、TCPソケットを開いてデータを送受信する必要があります。libssh2.orgdirect_tcpip.cの例に従おうとしていますが、うまく機能するようになりました。コードを実行すると、次のように表示されます。

Waiting for TCP connection on... 0.0.0.0:6379

それで私はtelnetを使ってそれと通信しようとします:

telnet 0.0.0.0 6379

この方法でRedisに正常に接続し、対話することができます。はい。

次のステップは、プログラムでサーバーと通信し、アプリのUIからコマンドを送信できるようにすることですが、電話をかけるとプログラムがブロックさaccept()れ、接続が確立されるのを待ってスタックします。これは問題です。プログラムで接続する必要がありますが、その方法がわかりません。

libssh2_session_set_blocking(session, 0);以前に電話をかけてみaccept()ましたが、何も変わらなかったようです。

私の目標は、アプリがリモートのRedisサーバーとできるだけ簡単に通信できるように転送を設定することであり、ソケットプログラミングはまったく初めてです。Redisにはセキュリティが組み込まれていないため、SSHトンネルが必要です。内部で通信することをお勧めします。

私を正しい方向に向けることができる人に感謝します!

4

1 に答える 1

0

@Danackによって投稿されたコメントは、私にとって問題を解決しました。バックグラウンドスレッドを使用してリスニングを行っていますが、ブロックされなくなり、正常に接続できるようになりました。

于 2013-03-15T03:41:24.523 に答える