gpt4 book ai didi

amazon-web-services - 尝试在 AWS 上绑定(bind)套接字时出现 std@socket_bind 异常

转载 作者:行者123 更新时间:2023-12-04 08:00:43 25 4
gpt4 key购买 nike

我正在尝试在 Amazon Web Services 上启动一个简单的套接字服务器,但在尝试像这样绑定(bind)套接字时收到一条错误消息:

var s:Socket = new Socket();
s.bind(new Host("Public AWS image IP here"), 5000);

错误是std@socket_bind异常。我究竟做错了什么?我是在滥用 IP 地址还是需要打开 5000 端口?我是一个完全的初学者。

更新:我已经将IP地址更改为0.0.0.0,服务器已成功启动,但是客户端仍然无法连接到服务器:

s.connect("AWS Public IP", 5000);

但是为什么?正如我发现的那样,绑定(bind)到 0.0.0.0 应该将套接字绑定(bind)到所有可用的 IP,并且我的 AWS 控制台中有一条规则允许所有连接到端口 5000

最佳答案

如果您尝试绑定(bind) EC2 公共(public) IP,则不能,因为公共(public) IP 未分配给您的网络接口(interface)。您将绑定(bind)私有(private) IP 地址。 EC2 实例对“逻辑上”分配给它的公共(public) IP 地址一无所知。

AWS 互联网网关 (IGW) 是一种特殊类型的 1 对 1 NAT 网关,用于公共(public)地址到私有(private)地址的映射。这意味着公共(public) IP 地址分配给网关的公共(public)端,而不是您的 EC2 实例。您的 EC2 实例收到一个私有(private) IP 地址,这是您可以在 bind() 调用中使用的地址。

但是,更好的选择是绑定(bind) 0.0.0.0,因为这意味着绑定(bind)到所有网络接口(interface)。

关于amazon-web-services - 尝试在 AWS 上绑定(bind)套接字时出现 std@socket_bind 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52468445/

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