python - 如何制作一个简单的 Python 文本服务器
问题描述
我正在尝试制作一个提供字符串的网络服务器。是的,就是这样,只是字符串,没有变量,没有 CSS。问题是刷新。假设字符串每秒都在变化,存储在 Python 变量中。问题是为客户端提供服务,我想让客户端不必再次请求页面,而是服务器在每次更新时发送新字符串。
我试过 Cherrypy,但使用的方法是返回一个,它退出一个循环。如何制作这个“简单”的网络服务器?对套接字编程也真的很陌生.. 昨天刚听到这个词.. 编辑:我认为它应该由 HTML 提供.. 我希望它能够通过浏览器打开编辑:我认为伪代码应该是这样的
def loopingfunction:
do things
return var
def server:
while True:
displayed_text=loopingfunction()
send_displayed_text_to_client()
解决方案
不是cherrypi实现的解决方案,但如果我的问题是正确的,这里有一个基本的实现和解释:
import time, socket, sys
socket_server = socket.socket()
server_host = socket.gethostname()
ip = socket.gethostbyname(server_host)
sport = 8080
print('This is your IP address: ',ip)
server_host = input('Enter friend\'s IP address:')
name = input('Enter Friend\'s name: ')
socket_server.connect((server_host, sport))
socket_server.send(name.encode())
server_name = socket_server.recv(1024)
server_name = server_name.decode()
print(server_name,' has joined...')
while True:
message = (socket_server.recv(1024)).decode()
print(server_name, ":", message)
message = input("Me : ")
socket_server.send(message.encode())
首先,我们导入这个socket
库,因为这个 python 库包含实现套接字的必要函数。该sys
库提供了系统模块,该模块负责提供与系统目录、函数和方法相关的数据。该time
模块使我们能够对时间的转换和描述执行许多操作。
该端口被指定为 8080。选择该端口是因为在大多数机器上这是一个默认的免费端口。
传入连接的详细信息存储在 client_name 变量中。客户端名称最长为 1024 字节。
用户输入消息。这是使用 encode() 编码的,然后通过套接字发送。使用 send() 函数发送消息,该函数在之前调用 accept() 函数期间创建的连接对象上调用。然后显示“消息已发送……”。
使用 conn 对象的 recv() 接收传入消息。它最多可以接收 1024 字节的信息。消息在服务器端使用 decode() 解码
推荐阅读
- python - 装饰功能,锁定功能?
- c++ - 从缓冲区数据初始化 AVFormatContext
- python - convert_pytorch_model_to_tf() 是如何工作的?
- android - 我可以获得edittext的文本对象引用项目的视图持有者吗?
- .htaccess - htaccess 在 URL 重写时删除空格
- javascript - 包含其他分配变量值的复杂 Javascript 变量?
- linux - sudo ./jetty 停止或启动失败
- node.js - HTTP 模块到请求模块翻译
- unit-testing - 尽管放置了测试程序集模式,为什么测试程序集没有在 VSTS azure 构建管道中过滤?
- maven - ${object.property} 显示为字符串而不显示值