TCP客户端及服务器端开发实践

一、TCP客户端及服务器端开发实践

1、TCP网络应用程序开发分类

① TCP客户端应用程序开发

② TCP服务器端应用程序开发

客户端程序是指运行在用户设备上的程序,服务端程序是指运行在服务器设备上的程序,专门为客户端提供数据服务。那如何记忆呢?

主动发起建立连接请求的是客户端程序,等待接受连接请求的是服务端程序。

2、TCP客户端程序开发流程及应用实践(五步走)

开发流程介绍

 socket类的介绍

① 导入socket模块
import socket
​
② 创建客户端socket对象使用socket类
socket.socket(AddressFamily, Type)

客户端socket类的参数和方法说明:

参数名说明
AddressFamilyIP地址类型, 分为IPv4和IPv6
Type传输协议类型

开发客户端需要使用的函数:

 

TCP客户端程序开发实践

import socketif __name__ == '__main__':# 1、创建客户端套接字对象tcp_client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 2、和服务器端套接字建立连接(参数必须是一个元祖)tcp_client_socket.connect(("192.168.31.181", 8080))# 3、发送数据tcp_client_socket.send('hell, itheima'.encode(encoding='utf-8'))# 4、接收数据recv_data = tcp_client_socket.recv(1024).decode('utf-8')print(recv_data)# 5、关闭客户端套接字tcp_client_socket.close()

3、TCP服务器端开发流程及应用实践(七步走)

服务器端

开发流程介绍

 

 socket类的介绍

① 导入socket模块
import socket
​
② 创建客户端socket对象使用socket类
socket.socket(AddressFamily, Type)

客户端socket类的参数和方法说明:

参数名说明
AddressFamilyIP地址类型, 分为TPv4和IPv6
Type传输协议类型

开发客户端需要使用的函数:

① 导入socket模块
import socket
​
② 创建服务器端socket对象使用socket类
socket.socket(AddressFamily, Type)

客户端socket类的参数和方法说明:

参数名说明
AddressFamilyIP地址类型, 分为TPv4和IPv6
Type传输协议类型

开发服务器端需要使用的函数:

方法名说明
bind绑定IP地址和端口号
listen设置监听
accept等待接受客户端的连接请求
send发送数据
recv接收数据

 

 

TCP服务器端程序开发实践

import socketif __name__ == '__main__':# 1、创建服务器端套接字对象tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 2、绑定IP地址与端口号tcp_server_socket.bind(("", 8888))# 3、开启监听tcp_server_socket.listen(128)# 4、等待接收客户端连接请求conn_socket, ip_port = tcp_server_socket.accept()print('客户端IP+端口:', ip_port)# 5、接收数据recv_data = conn_socket.recv(1024)print('接收到的数据:', recv_data.decode())# 6、发送数据conn_socket.send("客户端的数据已经收到了".encode())# 7、关闭套接字conn_socket.close()tcp_server_socket.close()

4、TCP服务器端开发面向对象版本

# 导入模块
import socket# 创建一个WebServer服务器端类
class WebServer(object):# 定义__init__()魔术方法,用于对象初始化def __init__(self):# 创建套接字对象self.tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 绑定IP与端口号self.tcp_server_socket.bind(("", 8090))# 设置监听self.tcp_server_socket.listen(128)# 定义一个handle_client_request()def handle_client_request(self, new_socket, ip_port):# 接收客户端消息recv_data = new_socket.recv(1024)recv_data = recv_data.decode('gbk')print(f'{ip_port}客户端发送过来的消息:{recv_data}')# 返回(发送)消息给客户端content = '信息已收到,over,over!'.encode('gbk')new_socket.send(content)# 处理完成后,关闭新套接字对象# new_socket.close()# 定义一个start方法,用于启动WebServer,接收客户端连接def start(self):while True:# 等待客户端连接new_socket, ip_port = self.tcp_server_socket.accept()# 定义一个方法,用于接收和发送消息self.handle_client_request(new_socket, ip_port)# 创建程序执行入口,实例化WebServer类生成对象
if __name__ == '__main__':# 实例化对象ws = WebServer()# 调用自身方法,用于启动服务ws.start()

5、扩展:TCP服务器端开发之多客户端

# 导入模块
import socket# 1、创建套接字对象
tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 2、绑定IP与端口
tcp_server_socket.bind(("", 8090))
# 3、设置监听
tcp_server_socket.listen(128)
# 4、等待客户端连接
while True:# 使用try...except捕获连接异常try:new_socket, ip_port = tcp_server_socket.accept()while True:try:# 5、接收客户端发送过来的消息recv_data = new_socket.recv(1024)recv_data = recv_data.decode('gbk')print(f'{ip_port}:{recv_data}')content = input('服务器端消息:').encode('gbk')new_socket.send(content)except ConnectionResetError:print(f'{ip_port}客户端连接已经断开')breakexcept:print('出错,退出服务器监听')break# 关闭套接字对象
tcp_server_socket.close()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/792909.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软考--软件设计师(软件工程总结1)

目录 1.定义 2.软件生存周期 3.软件过程(即软件开发中遵循的一系列可预测的步骤) ​编辑4.软件开发模型 5.需求分析(软件需求分析,系统需求分析或需求分析工程) 6. 需求工程 7.系统设计 8.系统测试 1.定义 软件…

【开发环境】Mac 安装 Visual Studio Code ( VSCode 简介 | 下载 VSCode | 安装 VSCode | 安装中文语言包 )

文章目录 一、Visual Studio Code 简介二、MAC 安装 Visual Studio Code1、下载 Visual Studio Code2、安装 Visual Studio Code3、安装中文语言包4、编辑 html 并运行 一、Visual Studio Code 简介 Visual Studio Code 简称 VSCode , 是 微软 开发的一款 轻量级 / 跨平台 的代…

腾讯云服务器4核8g配置好不好?用它干啥使?

腾讯云4核8G服务器多少钱?腾讯云4核8G轻量应用服务器12M带宽租用价格646元15个月,活动页面 txybk.com/go/txy 活动链接打开如下图所示: 腾讯云4核8G服务器优惠价格 这台4核8G服务器是轻量应用服务器,详细配置为:轻量4核…

【Pt】马灯贴图绘制过程 05-铁丝与渲染出图

目录 效果 步骤 一、基本材质 二、浮尘 三、渲染 效果 步骤 一、基本材质 CtrlAlt鼠标右键选中指定的纹理集 在智能材质中将“Iron Forged Old”加入图层 将智能材质“Iron Forged Old”文件夹打开,将图层“Base”和“Edge”的基本颜色改暗一点 二、浮尘 新…

746.Leetcode 使用最小花费爬楼梯

746.Leetcode 使用最小花费爬楼梯 给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。 请你计算并返回达到楼梯…

BUUCTF-MD5

BUUCTF-MD5 1 注意:得到的 flag 请包上 flag{} 提交 27120bd8-e273-4528-97a9-28dcebe236de.zip flag{admin1} e00cf25ad42683b3df678c61f42c6bdahttps://www.cmd5.com/

pycharm和Spyder多行注释快捷键

1.选取注释内容 2.pycharm:使用Ctrl/ 3.Spyder:使用Ctrl1 效果图

IDEA配置本地Maven(解决依赖下载缓慢)

1.下载Maven Maven下载页 根据需要选择下载其中一个,我选了zip格式的 将下载好的apache-maven-3.9.5解压到你想要的目录下 2.配置系统环境 设置系统环境变量 MAVEN_HOME 为安装路径的bin目录 变量名:MAVEN_HOME 变量值:写你的 apache-m…

Docker 哲学 - docker swarm

Docker Swarm 模式下的集群管理和服务恢复机制 Docker Swarm 是 Docker 的集群管理和编排功能。在 Swarm 模式下,你可以将多个 Docker 主机组合成一个虚拟主机,称为 Swarm 集群。Swarm 集群由一个或多个管理节点(manager nodes)和…

故障诊断 | 一文解决,GCN图卷积神经网络模型的故障诊断(Matlab)

效果一览 文章概述 故障诊断 | 一文解决,GCN图卷积神经网络模型的故障诊断(Matlab) 模型描述 GCN(Graph Convolutional Network)是一种基于图结构数据进行卷积操作的神经网络模型。它在处理图数据上展现了很好的性能,特别适用于节点分类、图分类和图生成等任务。 GCN模…

51入门之LED

目录 1.配置文件 2.点亮一个LED 2.1单个端口操作点亮单个LED 2.2整体操作点亮LED 3.LED闪烁 4.LED实现流水灯 4.1使用for循环和移位实现 4.1.1移位操作符 4.1.2使用移位操作和for循环实现 4.2使用移位函数实现LED流水灯 众所周知,任何一个硬件工程师…

基于机器学习的木马检测模型的设计与实现(论文)_kaic

摘 要 科技的发展带来了人们生活的改变,近年来我国网民已突破十亿人口, 而且在后疫 情时代, 经历了疫情时期的一系列线上活动, 人们对网络的依赖比以往任何时期都要高 得多。高频次的上网行为也带来了一系列安全问题&#xff…

Cisco路由器配置IPv6 Manual隧道

Cisco路由器配置IPv6 Manual隧道 IPv6与IPv4共存的方式 IPv6与IPv4共存方式大致有三种: 双栈:要求网络中所有设备均同时支持IPv4和IPv6转换:转换这种方式将IPv6协议的报头转换成IPv4协议报头。隧道:假定两个IPv6节点要使用IPv6…

flink源码编译-job提交

1、启动standalone集群的taskmanager standalone集群中的taskmanager启动类为 TaskManagerRunner 2 打开master启动类 通过 ctrln快捷键,找到、并打开类: org.apache.flink.runtime.taskexecutor.TaskManagerRunner 3 修改运⾏配置 基本完全按照mas…

NIUSHOP完美运营版商城 虚拟商品全功能商城 全能商城小程序 智慧商城系统 全品类百货商城

完美运营版商城/拼团/团购/秒杀/积分/砍价/实物商品/虚拟商品等全功能商城 干干净净 没有一丝多余收据 还没过手其他站 还没乱七八走的广告和后门 后台可以自由拖曳修改前端UI页面 还支持虚拟商品自动发货等功能 挺不错的一套源码 前端UNIAPP 后端PHP 一键部署版本 源码免费…

腾讯云4核8G服务器性能怎么样?能用来干什么?

腾讯云4核8G服务器多少钱?腾讯云4核8G轻量应用服务器12M带宽租用价格646元15个月,活动页面 txybk.com/go/txy 活动链接打开如下图所示: 腾讯云4核8G服务器优惠价格 这台4核8G服务器是轻量应用服务器,详细配置为:轻量4核…

ros小问题之rosdep update time out问题

在另外一篇ROS 2边学边练系列的文章里有写碰到这种问题的解决方法(主要参考了其他博主的文章,只是针对ROS 2做了些修改调整),此处单拎出来方便查找。 在ROS 2中执行rosdep update时,报出如下错误: 其实原因…

elsint报错Delete `␍`eslintprettier/prettier

一,原因 这篇博客写得很清楚:解决VSCode Delete ␍eslint(prettier/prettier)错误_vscode 删除cr-CSDN博客 还有这篇文章,解决办法很详细:滑动验证页面 二,解决办法 根目录下新建.prettierrc.js文件 module.exports…

谷歌AI搜索革新:探索高级搜索服务背后的未来趋势

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

vulhub中Apache Solr RemoteStreaming 文件读取与SSRF漏洞复现

Apache Solr 是一个开源的搜索服务器。在Apache Solr未开启认证的情况下,攻击者可直接构造特定请求开启特定配置,并最终造成SSRF或任意文件读取。 访问http://your-ip:8983即可查看Apache Solr后台 1.访问http://your-ip:8983/solr/admin/cores?indexI…