我正在编写一个自定义隧道(首先有一个自定义的 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);
}
}
我省略了错误处理和连接套接字的代码以使其更具可读性。