您会为隧道推荐哪些插座选项?

| 我正在编写一个自定义隧道(首先有一个自定义的hello,然后该连接成为一个隧道),但是速度很慢。 我想知道是否有什么我可以提高速度的。 例如,提高使用短消息的连接速度的一种方法是禁用nagle算法(TCP_NODELAY)。 您对隧道的建议是什么? 如果有帮助,我正在隧道RTSP和HTTP。 编辑:该代码是尽可能简单:
int remote_fd;
int local_fd;
int fdmax;
char buf[1 << 10];

fdset master_set, read_set;
FD_ZERO(&master_set);
FD_ZERO(&read_set);
FD_SET(remote_fd, &master_set);
FD_SET(local_fd, &master_set);

fdmax = remote_fd > local_fd ? remote_fd : local_fd;

//Connect both remote_fd and local_fd
...

while (1) {
    read_set = master_set;
    select(fdmax + 1, &read_set, NULL, NULL, NULL);
    if (FD_ISSET(local_fd, &read_set)) {
        int n = recv(local_fd, buf, sizeof(buf), 0);
        send(remote_fd, buf, n, 0);
    }
    if (FD_ISSET(remote_fd, &read_set)) {
        int n = recv(remote_fd, buf, sizeof(buf), 0);
        send(local_fd, buf, n, 0);
    }
}
我省略了错误处理和连接套接字的代码,以使其更具可读性。     
已邀请:
问题可能出在您的代码问题上,而不是套接字选项中。 TCP_NODELAY可能有帮助,也可能没有帮助。大插座和接收怒吼可能会有所帮助。您的代码可能会引入延迟。给我们看一些代码。     
我认为禁用nagle算法不会有太大帮助。您提供的信息太少,无法提供更多具体的帮助。因此,其余答案仅是猜测。您需要提供隧道两端在哪个平台/ OS上以及所使用的编程语言。 例如。如果压缩请求/响应,HTTP隧道将大大受益。但是,如果您使用的是手持设备,那会消耗更多的电池。 如果您使用UDP而不是TCP,则RTSP将受益匪浅,因为它是一种实时协议,实际上并不关心一切是否正确到达。     

要回复问题请先登录注册