首页 > 解决方案 > 客户端如何使用 EC2 连接到服务器

问题描述

我刚刚将我的套接字服务器放在 Amazon EC2 上,服务器已启动并正在运行。服务器套接字的端口是ss = new ServerSocket(30001);. 我将客户端类中的套接字端口设置为什么?它目前在本地主机上。socket = new Socket("localhost", 30001);amazon EC2 地址是
ec2-user@ec2-34-253-76-28.eu-west-1.compute.amazonaws.com Do I just replace localhost with this?

标签: javaamazon-web-servicessocketsamazon-ec2port

解决方案


如果客户端是远程的(与服务器不在同一主机上),那么可以,使用主机的 DNS 名称或公共 IP 地址。

您还必须允许与托管您的服务器应用程序的 EC2 实例的入站连接。确保端口 30001 对您的客户端公共 IP 地址的入口开放(或通过将 0.0.0.0/0 指示为源 CIDR 向世界开放)。您可以通过Security Groups在 AWS 中执行此操作。

如果您将您的服务器暴露给世界,那么您应该(至少)为您的客户端实施某种形式的身份验证。

如果您的客户端无法连接,请检查几件事:

  • 您的服务器套接字是否绑定到 0.0.0.0(或与 EC2 实例关联的公共 IP)?
  • 您的服务器应用程序正在运行吗?
  • netstat 是否显示您的服务器应用程序正在侦听端口 30001?
  • 您是否向 EC2 实例添加了一个安全组并添加了一个入口规则,允许从您的客户端 IP(或世界)到端口 30001 的入站流量
  • 客户端是否在阻止出站端口 30001 的网络(例如公司)上运行

推荐阅读