假设我有一个可靠的UDP库,并希望通过它隧道任意TCP连接。这是我目前的做法,但我觉得它可能不太高效。非常欢迎任何建议。
1.客户端建立一个可靠的UDP连接到服务器。 2.客户端运行本地SOCKS5代理,它接收来自连接到它的任何应用程序的数据,并通过可靠的UDP连接转发。每个数据包包括一个唯一的4字节id,对于每个SOCKS连接都是唯一的。 3.服务器接收数据。如果4字节id是新的,则创建到其本地TCP套接字的新连接并发送数据,并生成一个新线程,该线程通过适当的id将任何来自服务器的回复通过可靠的UDP连接转发。如果4字节id是旧的,则只需通过现有的TCP连接发送数据。 4.客户端接收数据,并将其通过现有的SOCKS连接发送到启动它的任何应用程序。
目前,这似乎对于从浏览器进行简单的HTML请求有效,但由于服务器没有直接连接到客户端,因此无法确定客户端何时终止连接。有更好的方法吗?
编辑:不,这不是作业。如果您不知道可靠的UDP库的优势或根本没有听说过它们,请不要回复。谢谢。
1.客户端建立一个可靠的UDP连接到服务器。 2.客户端运行本地SOCKS5代理,它接收来自连接到它的任何应用程序的数据,并通过可靠的UDP连接转发。每个数据包包括一个唯一的4字节id,对于每个SOCKS连接都是唯一的。 3.服务器接收数据。如果4字节id是新的,则创建到其本地TCP套接字的新连接并发送数据,并生成一个新线程,该线程通过适当的id将任何来自服务器的回复通过可靠的UDP连接转发。如果4字节id是旧的,则只需通过现有的TCP连接发送数据。 4.客户端接收数据,并将其通过现有的SOCKS连接发送到启动它的任何应用程序。
目前,这似乎对于从浏览器进行简单的HTML请求有效,但由于服务器没有直接连接到客户端,因此无法确定客户端何时终止连接。有更好的方法吗?
编辑:不,这不是作业。如果您不知道可靠的UDP库的优势或根本没有听说过它们,请不要回复。谢谢。