CocoaAsyncSocket TCP代理/隧道

时间:2016-06-28 09:08:12

标签: ios objective-c sockets gcdasyncsocket cocoaasyncsocket

我正在使用CocoaAsyncSocket尝试创建TCP隧道/ mux / demux,通过端口对(A< - > B)转发所有连接。 写入端口A的所有内容都应该从端口B“出来”,反之亦然。我只能使用端口A和B,无法打开其他端口。

我在A和B上创建2个监听AsyncSockets,并且有两个连接客户端阵列,并且在

- (void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag if (sock.localPort == B.localPort) { for (AsyncSocket * cl in clientsOfA) { [cl writeData:data withTimeout:-1 tag:0]; [cl readDataWithTimeout:-1 tag:0]; } [sock readDataWithTimeout:-1 tag:0]; } 我在端口A上读到的所有内容都将发送给端口B的所有客户端,反之亦然。 在A方面有一个Safari,向A发出请求。

我的问题是: 当数据从B端口返回时,在A端,我有5个客户端(谢谢Safari ...),我不知道哪一个最初请求当前数据包,所以我将数据发送给所有这些客户端和......好吧......一切都搞砸了。

这种mux / demux能否以这种方式实现?或者实现这一目标的正确方法是什么?我怎样才能区分发起客户?

0 个答案:

没有答案