如何将在AWS Linux上运行的C websocket服务器与本地虚拟机上的客户端链接?

问题描述

我最近用C语言编写了我要参加的在线课程的echoserver / echoclient程序(操作系统研究生课程,here)。我可以借助(以及Beej的网络指南(here的修改)的帮助来完成它。我可以在Windows 10笔记本电脑上运行的Ubuntu 20.04虚拟机上很好地运行它。试图在AWS Linux实例和Ubuntu VM上的echoclient上运行echoserver,因为我的最终目标是构建一个具有中央服务器数据存储库的客户端程序。但是,我遇到了启动echoserver C代码的问题通过PuTTy的SSH-ing在AWS EC2实例上运行,然后我在Ubuntu VM上运行echoclient,但它无法连接(我在客户端收到的错误是它失败了connect阶段套接字调用)。我尝试了以下步骤:

  • 编辑EC2实例的安全配置的入站规则,以允许从在我的Ubuntu计算机上运行curl ifconfig.me时出现的IP地址进行“所有TCP”连接
  • 将我的Ubuntu VM的网络设置从NAT更改为桥接网络
  • 通过telnet <AWS Public IP> <PortNo>测试端口访问-导致“连接被拒绝”错误
  • 按照these的说明操作,确保不会阻止我的出站端口

我浏览了AWS页面(here)以及多个开发人员/ SO线程(到目前为止我发现的最好的here),但似乎无法弄清楚。如果有人可以帮助我,我将非常感激。如果有帮助,我很乐意发布我的服务器和客户端代码。

解决方法

弄清楚了:我的服务器中缺少以下代码行。

hints.ai_flags = AI_PASSIVE;

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...