gpt4 book ai didi

sockets - 如何将 STunnel 用于 TCP 服务器/客户端,其中客户端在端口 39000 上发送

转载 作者:可可西里 更新时间:2023-11-01 02:52:57 28 4
gpt4 key购买 nike

我有一个 TCP 服务器/客户端,其中服务器监听端口 5000,客户端传出端口为 39000。

我在服务器上设置了 Stunnel:

[custom]
accept = 6000
connect = 5000

...所以它接受端口 6000 上的连接并将其重定向到 5000(我的 Server.c 正在监听)。

我尝试通过以下方式在客户端上设置STunnel:

[custom_cl]
accept = 39000
connect = 192.168.1.3:6000

...因此它接受来自端口 39000 的任何数据并将其发送到端口 6000 的服务器(假设它位于 192.168.1.3)。

我的客户有这段代码:

client_addr.sin_family = AF_INET;
client_addr.sin_port = htons(39000);
client_addr.sin_addr.s_addr = inet_addr("0.0.0.0");
bzero(&(client_addr.sin_zero),8);

if (bind(sock, (struct sockaddr *)&client_addr, sizeof(struct sockaddr))
== -1) {
perror("Unable to bind");
exit(1);
}

...这样它将始终在端口 39000 上发送。我的问题是我收到“无法绑定(bind):地址已在使用中”,因为(我猜)STunnel 正在监听端口 39000。应该怎么办我在做什么?

最佳答案

您不需要为传出连接绑定(bind)一个套接字(除非您知道自己在做什么以及为了什么)。您只需要创建一个套接字并调用 connect()。您传递 localhost(或 127.0.0.1)作为目标地址,39000 作为目标端口。

关于sockets - 如何将 STunnel 用于 TCP 服务器/客户端,其中客户端在端口 39000 上发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4879715/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com