Python网络编程——TCP服务端多线程

简介: TCP服务端与多个客户端同时建立套接字,需要一个线程维护一个客户端。

概述

TCP服务端与多个客户端同时建立套接字,需要一个线程维护一个客户端。



实现步骤

1.导入socket包

importsocket


2.创建服务端套接字

socket.socket(AddressFamily, Type)

socket.AF_INET表示IPv4类型

SOCK_STREAM表示tcp

需要设置端口复用实现服务多客户端

tcp_server_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#端口复用 服务端退出端口立即释放tcp_server_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,True)        


3.绑定端口号

tcp_server_socket.bind

第一个参数表示ip地址,一般不用指定 表示本机的任何一个ip

第二个参数表示端口号

tcp_server_socket.bind(('',9090))


4.设置监听

表示最大等待建立链接的个数128

tcp_server_socket.listen(128)


5.等待客户端的连接请求

每次客户端和服务器建立连接成功都会返回一个新的套接字

whileTrue:
new_client , ip_port=tcp_server_socket.accept()
sub_thresd=threading.Thread(target=handle,args=(ip_port,new_client))
sub_thresd.start()


6.接收数据

收发消息使用新返回的套接字

rece_data=new_client.recv(1024)
ifrece_data:
rece_data=rece_data.decode('utf-8')
print("接收到的数据是",rece_data)


7.发送数据

send_content="问题正在处理中"send_data=send_content.encode('utf-8')
new_client.send(send_data)
new_client.close()


8.关闭套接字

tcp_server_socket.close()



代码实现:

importsocketimportthreadingdefhandle(ip_port,new_client):
print("客户端的ip和端口号是:" , ip_port)
whileTrue:
# 5.接收数据#收发消息使用新返回的套接字rece_data=new_client.recv(1024)
ifrece_data:
rece_data=rece_data.decode('utf-8')
print("接收到的数据是",rece_data)
# 6.发送数据send_content="问题正在处理中"send_data=send_content.encode('utf-8')
new_client.send(send_data)
new_client.close()
else:
print("客户端下线了",ip_port)
breakif__name__=='__main__':
# 1.创建服务端套接字# socket.AF_INET表示IPv4类型# SOCK_STREAM表示tcptcp_server_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
tcp_server_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,True)
#端口复用 服务端退出端口立即释放#socket.SOL_SOCKET 表示当前套接字#socket._RetAddress 复用选项#True 确定复用# 2.绑定端口号# 第一个参数表示ip地址,一般不用置顶 表示本机的任何一个ip#第二个参数表示端口号tcp_server_socket.bind(('',9090))
# 3.设置监听# 128:表示最大等待建立链接的个数tcp_server_socket.listen(128)
# 4.等待客户端的连接请求#每次客户端和服务器建立连接成功都会返回一个新的套接字whileTrue:
new_client , ip_port=tcp_server_socket.accept()
sub_thresd=threading.Thread(target=handle,args=(ip_port,new_client))
sub_thresd.start()
# 7.关闭套接字tcp_server_socket.close()
目录
相关文章
|
2月前
|
调度 Python
探索Python高级并发与网络编程技术。
可以看出,Python的高级并发和网络编程极具挑战,却也饱含乐趣。探索这些技术,你将会发现:它们好比是Python世界的海洋,有穿越风暴的波涛,也有寂静深海的奇妙。开始旅途,探索无尽可能吧!
70 15
|
2月前
|
机器学习/深度学习 算法 测试技术
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
本文探讨了基于图的重排序方法在信息检索领域的应用与前景。传统两阶段检索架构中,初始检索速度快但结果可能含噪声,重排序阶段通过强大语言模型提升精度,但仍面临复杂需求挑战
89 0
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
|
3月前
|
数据采集 存储 监控
Python 原生爬虫教程:网络爬虫的基本概念和认知
网络爬虫是一种自动抓取互联网信息的程序,广泛应用于搜索引擎、数据采集、新闻聚合和价格监控等领域。其工作流程包括 URL 调度、HTTP 请求、页面下载、解析、数据存储及新 URL 发现。Python 因其丰富的库(如 requests、BeautifulSoup、Scrapy)和简洁语法成为爬虫开发的首选语言。然而,在使用爬虫时需注意法律与道德问题,例如遵守 robots.txt 规则、控制请求频率以及合法使用数据,以确保爬虫技术健康有序发展。
309 31
|
3月前
|
存储 监控 算法
基于 Python 哈希表算法的局域网网络监控工具:实现高效数据管理的核心技术
在当下数字化办公的环境中,局域网网络监控工具已成为保障企业网络安全、确保其高效运行的核心手段。此类工具通过对网络数据的收集、分析与管理,赋予企业实时洞察网络活动的能力。而在其运行机制背后,数据结构与算法发挥着关键作用。本文聚焦于 PHP 语言中的哈希表算法,深入探究其在局域网网络监控工具中的应用方式及所具备的优势。
103 7
|
3月前
|
存储 数据库 Python
利用Python获取网络数据的技巧
抓起你的Python魔杖,我们一起进入了网络之海,捕捉那些悠游在网络中的数据鱼,想一想不同的网络资源,是不是都像数不尽的海洋生物,我们要做的,就是像一个优秀的渔民一样,找到他们,把它们捕获,然后用他们制作出种种美味。 **1. 打开魔法之门:请求包** 要抓鱼,首先需要一个鱼网。在Python的世界里,我们就是通过所谓的“请求包”来发送“抓鱼”的请求。requests是Python中常用的发送HTTP请求的库,用它可以方便地与网络上的资源进行交互。所谓的GET,POST,DELETE,还有PUT,这些听起来像偶像歌曲一样的单词,其实就是我们鱼网的不同方式。 简单用法如下: ``` im
89 14
|
4月前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【害虫识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
害虫识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了12种常见的害虫种类数据集【"蚂蚁(ants)", "蜜蜂(bees)", "甲虫(beetle)", "毛虫(catterpillar)", "蚯蚓(earthworms)", "蜚蠊(earwig)", "蚱蜢(grasshopper)", "飞蛾(moth)", "鼻涕虫(slug)", "蜗牛(snail)", "黄蜂(wasp)", "象鼻虫(weevil)"】 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Djan
294 1
基于Python深度学习的【害虫识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
|
4月前
|
存储 网络协议 安全
Java网络编程,多线程,IO流综合小项目一一ChatBoxes
**项目介绍**:本项目实现了一个基于TCP协议的C/S架构控制台聊天室,支持局域网内多客户端同时聊天。用户需注册并登录,用户名唯一,密码格式为字母开头加纯数字。登录后可实时聊天,服务端负责验证用户信息并转发消息。 **项目亮点**: - **C/S架构**:客户端与服务端通过TCP连接通信。 - **多线程**:采用多线程处理多个客户端的并发请求,确保实时交互。 - **IO流**:使用BufferedReader和BufferedWriter进行数据传输,确保高效稳定的通信。 - **线程安全**:通过同步代码块和锁机制保证共享数据的安全性。
170 23
|
4月前
|
监控 算法 安全
公司电脑网络监控场景下 Python 广度优先搜索算法的深度剖析
在数字化办公时代,公司电脑网络监控至关重要。广度优先搜索(BFS)算法在构建网络拓扑、检测安全威胁和优化资源分配方面发挥重要作用。通过Python代码示例展示其应用流程,助力企业提升网络安全与效率。未来,更多创新算法将融入该领域,保障企业数字化发展。
111 10
|
4月前
|
机器学习/深度学习 API Python
Python 高级编程与实战:深入理解网络编程与异步IO
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化、调试技巧、数据科学、机器学习、Web 开发和 API 设计。本文将深入探讨 Python 在网络编程和异步IO中的应用,并通过实战项目帮助你掌握这些技术。
|
机器学习/深度学习 人工智能 网络协议
TCP/IP五层(或四层)模型,IP和TCP到底在哪层?
TCP/IP五层(或四层)模型,IP和TCP到底在哪层?
260 4

推荐镜像

更多