我正在使用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能否以这种方式实现?或者实现这一目标的正确方法是什么?我怎样才能区分发起客户?