我正致力于在Objective-C中编写一个简单的Redis客户端应用程序。为了在我的服务器上与Redis通信,我需要SSH进入服务器,然后打开TCP套接字来回发送数据。我试图关注example from 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没有内置安全性,建议您在内部与之通信。
感谢所有能指出我正确方向的人!
答案 0 :(得分:0)
@Danack发布的评论为我解决了这个问题。我正在使用后台线程进行聆听,现在我不再被阻止并且连接正常。