0

我正在用 Objective-C 编写一个简单的 Redis 客户端应用程序。为了与服务器上的 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 连接和交互,是的!

现在下一步是让我能够以编程方式与服务器对话并从我的应用程序的 UI 向它发送命令,但是当我调用时程序被阻塞accept()并卡住等待连接进入。这是一个问题,因为我需要以编程方式连接到它,我似乎无法弄清楚如何做到这一点。

libssh2_session_set_blocking(session, 0);我之前试过打电话accept(),但这似乎并没有改变任何事情。

我的目标是设置转发,以便我的应用程序可以尽可能轻松地与远程 Redis 服务器通信,而且我对套接字编程完全陌生。我需要一个 SSH 隧道,因为 Redis 没有内置的安全性,建议您在内部与其通信。

感谢任何可以为我指明正确方向的人!

4

1 回答 1

0

@Danack 发表的评论为我解决了这个问题。我正在使用后台线程进行监听,现在我不再被阻塞并且连接得很好。

于 2013-03-15T03:41:24.523 回答