Python正课87 —— TCP UDP通信
时间:2020-04-20
本文章向大家介绍Python正课87 —— TCP UDP通信,主要包括Python正课87 —— TCP UDP通信使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
本文内容皆为作者原创,如需转载,请注明出处:https://www.cnblogs.com/xuexianqi/p/12737034.html
一:TCP基础版
服务端:
import socket
# 1.买手机
phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 流式协议 ==> TCP协议
# socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 数据报协议 ==> TCP协议
# 2.绑定手机卡
phone.bind(('127.0.0.1', 8080)) # 端口号建议用0-65535,因为0-1024被系统占用
# 3.开机
phone.listen(5) # 5指的是半连接池的大小
print('服务端启动完成,监听地址为:%s:%s' % ('127.0.0.1', 8080))
# 4.等待电话连接请求:拿到电话连接conn
conn, client_addr = phone.accept()
# print(conn)
print("客户端的ip和端口:", client_addr)
# 5.通信:收\发消息
data = conn.recv(1024) # 最大接收的数据量为1024Bytes,收到的是bytes类型
print("客户端发来的消息:", data.decode('utf-8'))
conn.send(data.upper())
# 6.关闭电话连接conn(必选的回收资源的操作)
conn.close()
# 7.关机(可选操作)
phone.close()
客户端:
import socket
# 1.买手机
phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 流式协议=》tcp协议
# 2.拨通服务端电话
phone.connect(('127.0.0.1', 8080))
# 3.通信
import time
time.sleep(10)
phone.send('hello egon 哈哈哈'.encode('utf-8'))
data = phone.recv(1024)
print(data.decode('utf-8'))
# 4.关闭连接(必选的回收资源的操作)
phone.close()
二:TCP进阶版
服务端:
import socket
# 1.买手机
phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 流式协议=》tcp协议
# 2.绑定手机卡
phone.bind(('127.0.0.1', 8083)) # 0-65535, 1024以前的都被系统保留使用
# 3.开机
phone.listen(5) # 5指的是半连接池的大小
print('服务端启动完成,监听地址为:%s:%s' % ('127.0.0.1', 8080))
# 4.等待电话连接请求:拿到电话连接conn
conn, client_addr = phone.accept()
# 5.通信:收\发消息
while True:
try:
data = conn.recv(1024) # 最大接收的数据量为1024Bytes,收到的是bytes类型
if len(data) == 0:
# 在unix系统洗,一旦data收到的是空
# 意味着是一种异常的行为:客户度非法断开了链接
break
print("客户端发来的消息:", data.decode('utf-8'))
conn.send(data.upper())
except Exception:
# 针对windows系统
break
# 6.关闭电话连接conn(必选的回收资源的操作)
conn.close()
# 7.关机(可选操作)
phone.close()
客户端:
import socket
# 1.买手机
phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 流式协议=》tcp协议
# 2.拨通服务端电话
phone.connect(('127.0.0.1', 8083))
# 3.通信
while True:
msg = input("输入要发送的消息>>>: ").strip() # msg=''
if len(msg) == 0: continue
phone.send(msg.encode('utf-8'))
print('======发送成功')
data = phone.recv(1024)
print(data.decode('utf-8'))
# 4.关闭连接(必选的回收资源的操作)
phone.close()
三:TCP高阶版
服务端:
客户端:
四:
原文地址:https://www.cnblogs.com/xuexianqi/p/12737034.html
- 高级软件工程师 2016-9月更新
- Httpclient 调用 HTTPS 加密通道的Restful服务
- 使用 Jersey 调用 Restful 服务
- 【学术】将吴恩达的第一个深度神经网络应用于泰坦尼克生存数据集
- 使用 HttpClient 调用 Restful 接口
- 元宵佳节:看Oracle技术粉们用SQL画团圆
- java 脚本引擎
- 不怕学不会 使用TensorFlow从零开始构建卷积神经网络
- 微信公众平台增加批量获取用户基本信息接口
- 谈网络适配器
- 【框架】为降低机器学习开发者门槛,苹果发布了Turi Create框架
- 新闻数据库分表案例
- 建立智能的解决方案:将TensorFlow用于声音分类
- Plugin Hook 设计与实现
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- ubuntu14.04安装opencv3.0.0的操作方法
- Linux中让alias设置永久生效的方法详解
- Centos系统下“无法打开并写入文件”问题的解决
- 如何在Linux下设置录音笔时间
- Linux下ZooKeeper分布式集群安装教程
- CentOS 6.5中利用yum搭建LNMP环境的步骤详解
- Linux下Kafka分布式集群安装教程
- Centos下升级Python及Mongodb驱动安装问题
- centOS6中使用crontab定时运行执行jar程序的脚本
- 基于cobbler 实现自动安装linux系统
- Polysh命令实现多日志查询的方法示例
- linux中启动tomcat后浏览器无法访问的解决方法
- Linux查看系统配置常用命令详解
- LNMP下提示File not found问题的解决方法
- Linux 配置SSH免密登录 “ssh-keygen”的基本用法