前面有篇文章 建议大家利用云服务器实现外网通信,发现有挺多刚接触socket的同学买了云服务器后,不知道如何设置, 将本地服务器代码移到云服务器上后 本地客户端一直连接不上,这里写下阿里云服务器的安全组设置(其他云服务器大同小异 对照下应该就可以设置好了),以及代码的注意事项。

先来说下云服务器的设置:

一、进入安全组设置页面,找到服务器实例,然后点击进入服务器实例详情页面,如果页面展示有安全组,直接点击进入设置页面, 否则 选选择安全组选项

二、进入安全组设置页面后,会看到 访问规则 会有入方向和出方向两个设置,不同的云服务器 可能名字有点差别 但都是一样的

入方向 就是其他地址访问本服务器地址的访问限制,初始的云服务器可能只开放了80 22等常用端口 其他端口都未开放 所以导致无法连接,下面我们添加一条入规则:

点击手动添加:

授权策略:允许

优先级:可以随意设置范围内数字就好,默认设置1 最高优先级

协议类型:不同云服务器可能有不一样的选项,阿里云可以选择 【自定义TCP】或者【全部】 ,大家可以试试自己的  【自定义TCP】应该就可以了,连接不了的话 就设置【全部】 就好了 这里是阿里云只有【全部】这个选项, 像华为云有【全部TCP】 和【全部放通】,建议选择【全部TCP】

然后就是端口设置,一般建议设置的端口数大一些,因为较小的端口号一般有固定的协议或者系统使用了,端口是设置范围的,起始端口和结束端口如果是同一个端口号,则只设置一个端口号开放, 阿里云这里可以设置8888/8888, 表示只有8888开放,也可以设置-1/-1表示全部开放(其他云服务可能不是-1/-1,可能是1/65535,或者其他), 也可以选择列表中的【全部】,

授权对象:也可能是其他名字如:目的地址、IP地址等等,这个选项就是设置本服务器中 刚才设置的开放端口号 对应在哪个IP地址上开放,如果云服务器有两个IP可用,比如前设置了8888端口 这里设置其中一个固定IP时,就只有连接该IP的对应开放端口8888才能连上,连接其他IP的时端口8888也是连不上的,这里一般设置0.0.0.0/0,0.0.0.0表示接受开放所有IP的8888端口(刚才设置的端口范围)

描述:可以不写 也可自己根据开放的端口的用途写上备注 方便后续查看

三、点击保存,安全组的入规则就添加好了 ,然后服务器代码的端口设置,上面开放的端口范围内的端口号就可以了, 出方向规则一般默认是全部放行的,如果没有 也可参照入方向 自己设置下,一样的流程。

然后是代码方面的注意事项:

一般刚开始在本地的时候, 服务器IP地址bind的是127.0.0.1回环地址 或者192.168.1.233内网ip对吧,这样子设置在本地机器通信的时候 是正常的,但是在公网上也就是云服务器上是不能被外界访问的,具体原因如下:

127.0.0.1(localhost):该地址是回环地址,是操作系统初始化本机的协议栈时  协议栈本身的IP地址,通过该地址传输的数据,不会发送到网卡上通过路由器传输,只是转发到本机的IP层处理 ,可以理解为只能在本机上使用,只能本机上的 客户端和服务器建立连接,其他的机器 无论是否是同一个局域网下的机子, 因为127.0.0.1不经过网卡处理,所以都无法连接

192.168.1.233:像这种192.168..开头的本机IP地址,是和物理网卡进行绑定的IP地址,通过该地址传输的数据 会经过网卡处理,根据需要发送到路由器等设备,将数据传输到目标地址,但要注意的是该地址是局域网地址,只能连接同一局域网范围下的机子,无法连接外网 也就是公网IP通信,大家刚写socket代码的时候 服务器一般都是设置的本机IP 所以本地和局域网通信都正常,但是在外网(公网)是无法连接的

39.108.220.10:公网IP 可以理解为除开像IP 127.0......、192.168....这样开头的IP地址,比如ping www.baidu.com,就会显示百度域名对应的公网IP,公网IP就是可以外网通信的IP地址,设置该地址就可以 本地机子与外网机子之间建立连接,本机客户端和云服务就应该设置公网IP建立连接

注意事项:我们在服务代码bind 的时候 如果本机有多张网卡也就是有多个IP地址可用,那么设置绑定固定的其中一个IP地址时,客户端意图连接本机的TCP时都只能通过该设置的IP连接,如果连接另一个IP,则会无法连接,如果设置INADDR_ANY(0.0.0.0) 则全部可连接,所以应该按需设置

大家如果云服务器上安全组规则设置好了,本地客户端还是连接不上云服务器则可能是服务器代码绑定的IP不对。

所以在云服务器上 socket服务器代码在bind的时候 IP地址应该设置 云服务器的公网IP,本地才能连接上,不过如果是初学的话 建议设置INADDR_ANY(0.0.0.0) 避免多个IP时出现连接不了的情况

客户端代码在connect的时候 IP地址需要设置云服务器的公网IP,公网IP在服务器实例页面应该就能看到,如果没有的话,点进服务器实例详情肯定可以看到有了。

总结下:

1.设置云服务器安全组规则,开放端口和IP

2.服务器代码绑定的IP地址设置公网IP或者INADDR_ANY(也就是0.0.0.0),端口设置安全组中开放的端口范围内的端口号

3.客户端connect时 设置IP应该是云服务器的公网IP,端口号应该和服务器代码中设置的端口号一致,是一个端口号,比如服务器bind的端口号是8888 ,那么客户端也要是8888

通过上面的设置应该就可以实现本机和外网通信了,如果都设置了,但是还连接不上的话,可以私信我,通过主页联系我,我可以无偿帮忙研究研究。

最后,感谢你能花时间来阅读该篇文章,希望能解决你的问题。

如何将socket服务器部署到云服务器上相关推荐

  1. tp5网站 服务器部署,tp5云服务器部署

    tp5云服务器部署 内容精选 换一换 SAP B1的部署方案如图1所示.说明如下:VPC网络:为了保证网络的安全,SAP B1系统中所有节点在一个VPC网络内,且所有节点应属于同一个AZ(Availa ...

  2. 如何将本地python项目部署到服务器上_如何将本地的Django项目部署到云服务器

    如何将本地的Django项目部署到云服务器 开发环境 开发语言: Python 后台框架:Django 前端框架:bootstrap web服务器:nginx wsgi服务器:uwsgi 查看本地项目 ...

  3. 如何将本地django项目部署到服务器,Django本地项目部署到云服务器

    开发环境 开发语言: Python 后台框架:Django web 服务器:nginx wsgi 服务器:uwsgi 云服务器系统:Ubuntu 查看本地项目 Django 和 Python 版本: ...

  4. 网站服务器部署注意事项,服务器部署改云部署注意事项

    服务器部署改云部署注意事项 内容精选 换一换 使用华为云提供的公共镜像制作私有镜像时,您需先购买云主机等云资源时镜像选择公共镜像.云服务器类型建议统一选择"s3 (通用计算型)", ...

  5. spring项目搭建云服务器,Spring Boot项目打包并部署到云服务器

    Spring Boot项目打包并部署到云服务器 一.云服务器的环境 OS: CentOS 7 Jdk 1.8 Spring Boot自动集成Tomcat,不需要单独配置 二.本地Spring Boot ...

  6. 部署war文件到服务器,war包怎么部署到云服务器

    war包怎么部署到云服务器 内容精选 换一换 部署提供可视化.一键式部署服务,支持并行部署和流水线无缝集成,实现部署环境标准化和部署过程自动化.本节通过以下四步介绍如何使用部署服务将归档在软件发布库的 ...

  7. ij运行tomcat_如何把本地Web项目部署到云服务器上

    [写给小白] 上手学Web的同学通常会用本地Tomcat进行测试 当一个网站写得差不多了,如何部署到云服务器,让别人也能远程访问呢? 1. 你需要 配置好Tomcat的云服务器(我用的linux系统) ...

  8. arm搭建云手机教程_教你从0开始部署阿里云服务器,阿里云服务器搭建网站教程...

    教你从0开始部署阿里云服务器,阿里云服务器部署网站的办法,阿里云搭建项目的办法,阿里云服务器搭建网站教程 1.购买 登录官网点击下面链接: 企业上云甄选​partner.aliyun.com 查看云服 ...

  9. ssm项目直接加html文件,如何把ssm项目和vue项目部署在云服务器(上)

    如何把ssm项目和vue项目部署在云服务器(上) 如何把ssm项目和vue项目部署在云服务器(上) 一.引入 URL的概念理解 在WWW上,每一信息资源都有统一的且在网上唯一的地址,该地址就叫URL( ...

  10. 坑:jmeter部署AWS云服务器时出现连接超时Non HTTP response code: org.apache.http.conn.HttpHostConnectException...

    背景: jmeter脚本部署到云服务器(AWS EC2)公网上时,启动jmeter脚本运行了5个小时才运行完毕,后面发现脚本报错timeout(如图),找了很久不知道原因,后面进入脚本发现全部在报错. ...

最新文章

  1. css 图表饼图,仅具有CSS的百分比饼图
  2. Python运行方式
  3. oracle数据结构是什么意思,Oracle数据结构知多少(一)
  4. 采用redis+ThreadLocal获取全局的登录用户信息(二)增加token快失效时刷新
  5. 数学--数论--HDU 12151七夕节
  6. 陌陌直播公益课复课 带乡村孩子“打卡”丝绸之路
  7. Vuex的API文档
  8. oracle数据库查询正在执行的sql,Oracle查询正在执行的SQL语句
  9. MapGIS制图学习(2)
  10. 规则动词的过去式及发音规则
  11. 大屯公司办公系统服务器地址,OA系统地址
  12. winEdt下编辑报错:Something‘s wrong--perhaps a missing \item. \end{thebibliography}
  13. (rear + maxSize - front) % maxSize 公式的理解
  14. PMP 第六章 项目时间管理
  15. 群论基础速成(6):五大著名群族
  16. BZOJ 4668: 冷战 并查集暴力LCA(雾)
  17. java ODBC连接MYSQL数据库
  18. 【Unity】使用 [xxx] 标记类和方法
  19. canvas坐标转换屏幕坐标_Canvas坐标系转换
  20. 天宇,snapseed,第五课,建筑照片调整

热门文章

  1. 【娱乐】你以为我在水群?其实我在内卷。(qq、微信自动发消息脚本)
  2. 查看一键Ghost的备份文件
  3. 一键清除系统垃圾 bat文件
  4. h3c交换机服务器无响应,华为(H3C)交换机版本升级遇到的问题总结
  5. PCSHARE VIP 2005源代码
  6. 【J2ME笔记】关于J2ME Image图片指定颜色透明化
  7. Visual C++ 2010创建Ribbon界面
  8. flash 游戏开发工作总结(1)--开发准备:FB的配置
  9. 小尺寸笔记本将走向何方 — X280 长测
  10. 如何免费去酒吧看球赛并喝扎啤