简单的OS X TCP转发服务器/服务

use*_*409 3 sockets macos tcp objective-c

作为TDD(测试驱动开发)项目的一部分,我想要一个简单的OSX服务/服务器,它只是在两个客户端之间转发数据.目的是实现在iOS(正在测试)中运行的一段代码与在OS X中运行的另一段代码之间的通信.

我想我需要双方在测试期间连接到服务器,这指向TCP

有许多使用NSStream创建简单客户端的示例,但未能找到创建服务器端的内容.

tro*_*foe 5

我本来以为这将是正常的,这个转发软件是一个客户端的最后服务器,而不是两者的代码的其他部分是一个客户端它(因为它是既反直觉的,有点难以acheive):

iOS App -> Forwarding Server -> OSX Server
Run Code Online (Sandbox Code Playgroud)

您可以使用netcat(默认安装在OSX上)实现此目的,只需:

$ nc -l -p local-port -c "nc osx-host osx-port"
Run Code Online (Sandbox Code Playgroud)

(见下文)

并且iOS应用程序只需要连接到local-port运行此转发服务器的任何计算机上.

编辑当我实际测试我的答案我发现,与OSX提供的netcat的不能支持端口转发,和我所提供的答案只有Linux版本(我相信这是OSX使用BSD重写)的作品.

无论如何,如果您乐意安装macport并使用,可以实现这一点socat.这是一个将端口8888重定向到www.google.com:80的工作示例:

$ sudo port install socat
$ socat TCP-LISTEN:8888,fork TCP:www.google.com:80
Run Code Online (Sandbox Code Playgroud)

如果您随后http://localhost:8888在浏览器中连接,则会触及Google.