Python创建一个TCP服务器

简介: Python创建一个TCP服务器

创建一个TCP服务器

我们想实现一个通过TCP协议同客户端通信的服务器

解决方案

创建TCP服务器的一种简单方式就是利用socketserver库。比如, 下面是一个简单的echo服务示例:

from socketserver import BaseRequestHandler, TCPServer


class EchoHandler(BaseRequestHandler):
    def handle(self):
        print('Got connection from ', self.client_address)
        while 1:
            msg = self.request.recv(8192)
            if not msg:
                break
            self.request.send(msg + ' 欢迎你'.encode('utf-8'))


if __name__ == '__main__':
    serv = TCPServer(('', 20000), EchoHandler)
    serv.serve_forever()

在这份代码中, 我们定义了一个特殊的处理类,它实现了一个handle()方法来服务于客户端连接。这里的request属性就代表着底层的客户端socket, 而client_address中包含了客户端的地址。

要测试这个服务端程序,首先运行这个脚本,然后再打开一个客户端脚本,将其连接到服务端上。示例如下:

from socket import socket, AF_INET, SOCK_STREAM

s = socket(AF_INET, SOCK_STREAM)
s.connect(('localhost', 20000))
s.send('Hello'.encode('utf-8'))
t = s.recv(8192)
print(t.decode('utf-8'))

结果如下:

# 服务器端
D:\Python39\python.exe D:/My_Project/TCP_server.py
D:\Python39\python.exe D:/My_Project/TCP_server.py
Got connection from  ('192.168.1.9', 62719)    # 另一台电脑连接服务端
Got connection from  ('192.168.1.13', 49914)   # 本地机访问服务端
Got connection from  ('192.168.1.13', 49915)
Got connection from  ('192.168.1.13', 49916)

# 客户端
D:\Python39\python.exe D:/My_Project/socket_client.py
Hello 欢迎你

Process finished with exit code 0
相关文章
|
11天前
|
弹性计算 安全 开发工具
灵码评测-阿里云提供的ECS python3 sdk做安全组管理
批量变更阿里云ECS安全组策略(批量变更)
|
1月前
|
缓存 监控 Linux
Python 实时获取Linux服务器信息
Python 实时获取Linux服务器信息
|
2月前
|
Python
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
使用Python的socket库实现客户端到服务器端的图片传输,包括客户端和服务器端的代码实现,以及传输结果的展示。
173 3
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
|
2月前
|
JSON 数据格式 Python
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
本文介绍了如何使用Python的socket模块实现客户端到服务器端的文件传输,包括客户端发送文件信息和内容,服务器端接收并保存文件的完整过程。
179 1
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
|
2月前
|
IDE 网络安全 开发工具
IDE之pycharm:专业版本连接远程服务器代码,并配置远程python环境解释器(亲测OK)。
本文介绍了如何在PyCharm专业版中连接远程服务器并配置远程Python环境解释器,以便在服务器上运行代码。
458 0
IDE之pycharm:专业版本连接远程服务器代码,并配置远程python环境解释器(亲测OK)。
|
2月前
|
网络协议 Java API
【网络】TCP回显服务器和客户端的构造,以及相关bug解决方法
【网络】TCP回显服务器和客户端的构造,以及相关bug解决方法
70 2
|
2月前
|
存储 网络协议 Java
【网络】UDP和TCP之间的差别和回显服务器
【网络】UDP和TCP之间的差别和回显服务器
77 1
|
3月前
|
安全 Python
使用Python实现简单的Web服务器
使用Python实现简单的Web服务器
67 6
|
3月前
|
网络协议 数据处理 C语言
利用C语言基于poll实现TCP回声服务器的多路复用模型
此代码仅为示例,展示了如何基于 `poll`实现多路复用的TCP回声服务器的基本框架。在实际应用中,你可能需要对其进行扩展或修改,以满足具体的需求。
96 0
|
4月前
|
存储 运维 监控
自动化运维:使用Python脚本进行服务器监控
【8月更文挑战第31天】在数字化时代,服务器的稳定运行对于企业至关重要。本文将介绍如何使用Python编写一个简单的服务器监控脚本,帮助运维人员及时发现并解决潜在问题。我们将从基础的服务器资源监控开始,逐步深入到日志分析与报警机制的实现。通过实际代码示例和操作步骤,使读者能够快速掌握自动化监控的技能,提升工作效率。