使用Python websockets搭建互联网服务器

article/2025/10/16 0:52:38

在上一篇文章中实现局域网的通信,使用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())

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


http://chatgpt.dhexx.cn/article/Y4RfEqos.shtml

相关文章

【ZED2-3】python同时实现websockets与flask

上篇博客【ZED-2】基于WebSockets库,通过多线程方式推送数据流_WXG1011的博客-CSDN博客采用多线程方式,基于websockets库实现数据流的推送,这篇博客主要实现将前端(nx板)代码移植到flask框架中,通过http方式…

【burpsuite安全练兵场-客户端16】测试WebSockets安全漏洞-3个实验(全)

前言: 介绍: 博主:网络安全领域狂热爱好者(承诺在CSDN永久无偿分享文章)。 殊荣:CSDN网络安全领域优质创作者,2022年双十一业务安全保卫战-某厂第一名,某厂特邀数字业务安全研究员&…

在python中使用websockets

WebSocket (WebSocket) Websocket is a communications protocol, providing full-duplex bi-directional communication over a single TCP connection. Websocket是一种通信协议,可通过单个TCP连接提供全双工双向通信。 To understand Websockets, first, we have to have …

django3 websockets

一、概述 现在Django 3.0附带了对ASGI的支持,将Websockets添加到Django应用中不需要任何额外的依赖关系。 在本文中,您将学习如何通过扩展默认的ASGI应用程序来使用Django处理Websocket。 我们将介绍如何在示例ASGI应用程序中处理Websocket连接&#xff…

websockets_WebSockets简介

websockets WebSockets are an alternative to HTTP communication in Web Applications. WebSocket是Web应用程序中HTTP通信的替代方法。 They offer a long lived, bidirectional communication channel between client and server. 它们在客户端和服务器之间提供了长期的双…

尝试Python的websockets库的最基础功能

目标 尝试最简单的代码创建一个服务器并在客户端收发信息。 主要参考的是官方文档的首页:https://websockets.readthedocs.io/ (还需要 asyncio 库的一些知识,可见之前的博客 翻译《使用asyncio的一个指南》作者:Andrew Crozier…

python使用websockets库

python使用websockets库 serve:在server端使用,等待客户端的连接。如果连接成功,返回一个websocket。 connect: 在client端使用,用于建立连接。 send:发送数据 recv:接收数据 close:关闭连接 服务端 #!/usr/bin/python3 # 主要功能&am…

什么是WebSockets!?

到目前为止,我们已经深入到实时世界,因为许多应用程序使用实时数据。 现在正是以技术立场解释所有导致这一点的事件的时候了。 所以,这里...... 目前,应用程序正在从利用数据库中的陈旧数据或在实际事件之后的实时体验中事…

WebSockets介绍

Web sockets定义为在servers和clients之间的双向连接。意味着servers和clients可以同时交流并发送数据。这种协议是从底层就是双工连接。Web sockets技术上得到了质的飞跃。 握手是一个过程,确保server与client同步。握手是Web Socket protocol的基础概念。 下面的图…

websockets_将WebSockets与Node.js结合使用

websockets WebSockets are an alternative to HTTP communication in Web Applications. WebSocket是Web应用程序中HTTP通信的替代方法。 They offer a long lived, bidirectional communication channel between client and server. 它们在客户端和服务器之间提供了长期的双…

各大公司数据结构与算法面试题解答(一)

还有一年就要找工作了,从现在开始找些公司的数据结构和算法的题来做一做,不定时贴出笔试面试题代码。 1.创新工场: 求一个数组的最长递减子序列比如{9,4,3,2,5,4,3&…

数据结构面试题整理

一 数据结构 1.你熟悉什么数据结构? 数组 链表 栈 队列 哈希 二叉树 二叉查找树 二叉堆 b树 b树 2.b树 b树 b*树 b和b都是节点可以有很多子节点,区别是b树所有的节点都可以存储关键字,而b树只有叶子节点存储关键字,适用于数据库…

数据结构与算法三十题,弄懂这些面试就够了!

https://www.toutiao.com/a6649963989537128967/ 2019-01-24 15:36:35 国外 IT 教育学院 Educative.io 创始人 Fahim ul Haq 写过一篇过万赞的文章《The top data structures you should know for your next coding interview》,总结了程序员面试中需要掌握的 8 种数据结构知识…

数据结构与算法面试知识点汇总(超全)

文章目录 一、哈希函数和哈希表01 哈希函数02 哈希表 二、布隆过滤器三、一致性哈希四、并查集01 具体实现02 优化03 代码实现 五、前缀树(trie树)六、B树和B树七、线段树01 线段树的优势02 线段树实现 一、哈希函数和哈希表 01 哈希函数 哈希函数&…

《数据结构》十道链表经典面试题多种方法深度解析

目录 ⛰️一、题目解析 🗻1.1删除链表中等于给定值 val 的所有节点(力扣) 🗻1.2反转一个单链表。(力扣) 🗻1.3给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有…

数据结构和算法常见面试问题总结,含答案

0. 写在前面 总导航在此 这些问题是我备考数据结构和算法的过程中,详细总结的常见面试问题和答案。逐个搜索并记录下来,花了很大的精力!如果想要获取源文件的话,可以关注我的微信公众号:小梁说代码,获取嘿…

(六)数据结构面试必问

什么是链表、队列、栈? 链表: 当需要存储多个相同数据类型的时候,可以使用数组存储,数组可以通过下标直接访问,但数组有个缺点就是无法动态的插入或删除其中的元素(特别是操作第一个位置上的元素&#xff…

数据结构常见面试题

链表是最基本的数据结构,面试官也常常用链表来考察面试者的基本能力,而且链表相关的操作相对而言比较简单,也适合考察写代码的能力。链表的操作也离不开指针,指针又很容易导致出错。综合多方面的原因,链表题目在面试中…

面试中常见的数据结构

上次在面试时被面试官问到学了哪些数据结构,那时简单答了栈、队列/(ㄒoㄒ)/~~其它就都想不起来了,今天有空整理了一下几种常见的数据结构,原来我们学过的数据结构有这么多~ 首先,先来回顾下C语言中常见的基本数据类型吧O(∩_∩)O …

数据结构算法常见面试考题

(1) 红黑树的了解(平衡树,二叉搜索树),使用场景 把数据结构上几种树集中的讨论一下: 1.AVLtree 定义:最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为…