在上一篇文章中实现局域网的通信,使用websockets,python作服务端,unity作客服端完成网络通信
这次准备实现互联网上的通信。

1.整个云服务器

要实现互联网通信,简单的方法就是先准备一个云服务器,这里我直接使用了阿里云服务器。学习用,就整了个最便宜的,38块一年。
阿里云网站

然后熟悉一下阿里云服务器的使用,这里参考了这篇文章:
阿里云ECS服务器入门使用流程 新手必看教程

登陆后,进入右上角控制台
在页面里点击“云服务器ESC”

然后点击管理控制台
进入到自己服务器页面:

注意这个公网ip,远程连接时要用。

主要需要设置两个地方,一个是登陆服务器用的密码,一个是设置服务器允许的端口。
首先设置密码:
点击左侧列表中“实例”,随后在右侧“更多”中点击重置实例密码。

修改好后记着,这就是之后远程登陆服务器用的密码。

然后设置端口:
点击“安全组配置”

点击配置规则:

然后点快速添加,加入配置端口。我这里怕麻烦,直选了所有端口。
云服务器准备完毕。

2.测试云服务器

远程连接:自己电脑上打开一个终端,输入

ssh root@你服务器的公网ip

root是它默认的用户名,然后输入之前设置的密码。

感觉就像连接一般的远程,然后就跟用终端控制电脑一样了。
不过这时候服务器里面没有东西,ls出来都是空的。

毕竟用终端写代码很不舒服,那直接用vscode远程连接也是可以的。
那个webServer是我新建的文件夹,其它就是服务器里面默认的东西了。

3.测试代码

服务器代码,这个放在云服务器上运行
注意服务器的ip在云服务器上的终端中使用ifconfig查看,不是公网ip

#https://www.cnblogs.com/lsdb/p/10949766.html
import asyncio
import websockets# 接收客户端消息并处理,把客户端发来的返回回去
async def recv_msg(websocket):while True:recv_text = await websocket.recv()response_text = f"context: {recv_text}"print(recv_text)await websocket.send(response_text)# 服务器端主逻辑
# websocket和path是该函数被回调时自动传过来的,不需要自己传
async def main_logic(websocket, path):await recv_msg(websocket)# 把ip换成自己本地的ip
start_server = websockets.serve(main_logic, '172.1.1.1', 8080)  #这个ip用ifconfig查看
# 如果要给被回调的main_logic传递自定义参数,可使用以下形式
# 一、修改回调形式
# import functools
# start_server = websockets.serve(functools.partial(main_logic, other_param="test_value"), '10.10.6.91', 5678)
# 修改被回调函数定义,增加相应参数
# async def main_logic(websocket, path, other_param)asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()

客户端代码,这个放在自己电脑上运行
注意客户端的连接的ip是云服务器的公网ip

import asyncio
import websockets
import json# 向服务器端发送认证后的消息
async def send_msg(websocket):while True:_text = input("please enter your context: ")if _text == "exit":print(f'you have enter "exit", goodbye')await websocket.close(reason="user exit")return Falseawait websocket.send(_text)recv_text = await websocket.recv()print(f"{recv_text}")async def send_msg_json(websocket):while True:data = {"health":8000,"cards":5,}         #测试数据new_data = json.dumps(data,ensure_ascii=False)     #将data转化为字符串await websocket.send(new_data)                                #发送请求response_str = await websocket.recv()print("rec:",response_str)return True# 客户端主逻辑
async def main_logic():async with websockets.connect('ws://公网ip:8080') as websocket:await send_msg_json(websocket)asyncio.get_event_loop().run_until_complete(main_logic())

在云服务器上运行服务端代码,在自己电脑上运行客户端代码,客户端发送消息到服务端,并成功收到服务端返回的消息。

使用Python websockets搭建互联网服务器相关推荐

  1. 用Python一键搭建Http服务器

    用Python一键搭建Http服务器 今天好友问我怎么从阿里云服务器上把文件下载下来.我一听之下觉得办法很多啊,随意搭个服务器,然后把文件一丢就可以下载了:弄个FTP也行:直接用远程桌面往下拖也可以. ...

  2. Python Django 搭建文件下载服务器

    本文仅供学习交流使用,如侵立删!demo下载见文末 Python Django 搭建文件下载服务器 环境 win10 Python:3.6.7 Django:2.2.7 运行效果 1.创建 Djang ...

  3. python 播放视频 ftp_利用Python快速搭建HTTPFTP服务器

    用 Python 快速实现 FTP 服务器 有时当你想快速搭建一个 FTP 服务器来临时实现文件上传下载时,这是特别有用的.我们这里利用 Python 的Pyftpdlib 模块可以快速的实现一个 F ...

  4. 如何用Python 快速搭建HTTP服务器

    Python具有语法简单.语句清晰的特点,而且Python的兼容性比较好,可以将其他语言制作的模块联结起来,具有强大且丰富的库,封装后可以轻松调用,因此成为编程语言中的"网红",甚 ...

  5. Python -- 手动搭建HTTP服务器

    目录 1.WSGI接口 2.新建WSGI服务器 3.使用if管理请求路径 4.使用字典管理请求路径 5.使用装饰器管理请求路径 6.requests模块的介绍 演示代码: import reimpor ...

  6. python+Django搭建web服务器

    一.使用Django创建服务 1.创建一个python项目 2.终端执行命令pip install Django 测试是否安装成功,终端下执行: python import django django ...

  7. python快速搭建本地服务器

    1.在cmd中查看 http.server用法 python -m http.server -h usage: server.py [-h] [–cgi] [–bind ADDRESS] [–dire ...

  8. 树莓派python实例_树莓派3 搭建 django 服务器的实例

    树莓派3的基本配置 这里接着上一章的搭建过程,在我新购置的树莓派3上完成一个网页服务器的搭建以及后台数据库的相关配置.关于树莓派的玩点实在是太多,限于篇幅不做展开.由于我们仅仅只是搭建一个服务器,所以 ...

  9. python服务器搭建ftp_Python搭建HTTP服务器和FTP服务器

    这篇文章主要为大家详细介绍了Python搭建HTTP服务器和FTP服务器的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本教程为大家分享了Python搭建HTTP服务器和FTP服务器的具 ...

  10. Python使用socketServer包搭建简易服务器过程详解

    官方提供了socketserver包去方便我们快速的搭建一个服务器框架. 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多已经做案 ...

最新文章

  1. 零基础学习java,这些书一定要看!
  2. 解析html文档的java库及范例
  3. 压缩感知先进——关于稀疏矩阵
  4. FTP下载文件中文名乱码FTP访问
  5. 语音识别技术原理是什么 讯飞语音识别技术特点介绍【详解】
  6. [CLR via C#]18. Attribute
  7. MyBatis-Plus学习
  8. VS+QT快速入门教程
  9. ascii码01100001_ASCII 码对照表详解 - 文章
  10. 第十一课:(2)在MINST-FASHION上实现神经网络的学习流程
  11. 2018秋招360测评试题及其答案
  12. dd命令打包多个文件_linux dd命令将系统打包成iso - 卡饭网
  13. fastlane 项目管理_在fastlane上获取您的android项目
  14. 第21节--非线性回归(下)
  15. 教你一招利用Python快速去除图片水印
  16. 免费Excel自动化转云端OA/ERP/CRM等办公系统数据管理软件工具
  17. ABP入门系列之1——ABP总体介绍
  18. XDOJ综合题 数字分解排序
  19. 前端框架综述(8)前端
  20. 预期与实际运行结果的对比

热门文章

  1. 爱加密加固病毒分析-破解篇
  2. unity3d kinect体感互动解决方案——2D体感换装
  3. 图解 Paxos 算法
  4. 2022年南京大学计算机考研复试考什么|考研复试时间
  5. Lattice Diamond 学习总结---“疑难杂症”杂篇
  6. Acrel-6000/B电气火灾监控系统在千山大厦的应用
  7. 2022-09-13 mysql列存储引擎-POC-查询数据错误追踪
  8. JSONP原理及实现
  9. python爬取付费音乐包_Python 收费、高品质无损音乐下载【开源】
  10. Odoo12功能模块文档整理