python中的TCP(传输控制协议)用法实例分析


Posted in Python onNovember 15, 2019

本文实例讲述了python中的TCP(传输控制协议)用法。分享给大家供大家参考,具体如下:

1.TCP与UDP的不同:

windows网络调试助手下载:https://pan.baidu.com/s/1IwBWeAzGUO1A3sCWl20ssQ
提取码:68gr

或者点击此处本站下载

  • 面向连接(确认有创建三方交握,连接以创建的传输)
  • 有序数据传输
  • 重发丢失的数据包
  • 舍弃重复的数据包
  • 无差错的数据传输
  • 阻塞/流量控制

2.客户端:

import socket
def main():
  # 创建套接字
  tcp_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
  # 连接服务器
  #tcp_socket.connect(("172.17.3.97",8080))
  server_ip = input("请输入要链接的服务器ip:")
  server_port = int(input("请输入要链接的服务器port:"))
  server_addr = (server_ip,server_port)
  tcp_socket.connect(server_addr)
  # 发送数据/接收数据
  send_data = input("请输入要发送的数据:")
  tcp_socket.send(send_data.encode("gbk"))
  #关闭套接字
  tcp_socket.close()
if __name__ == "__main__":
  main()

3.服务端:可以开启多个网络调试助手(客户端)测试

循环为多个客户端服务,并且循环为同一个客户端服务

import socket
def main():
  # 创建套接字
  tcp_server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 绑定本地信息
tcp_server_socket.bind("",7890)
# 让默认套接字由主动变为被动listen
tcp_server_socket.listen(128)
while True:
  print("等待一个新的客户端......")
  # 等待客户端的连接 accept
  new_client_socket ,client_addr = tcp_server_socket.accept()
  print("一个新的客户端已到来%s" %str(client_addr))
  while True:
    # 接受客户端发过来的请求
    recv_data = new_client_socket.recv(1024)
    print("客户端发来的请求是%s" %recv_data.decode("gbk"))
    # 如果recv解堵塞,那么有两种方式:
    # 1.客户端发来数据
    # 2.客户端调用close
    if recv_data:
      # 回送一部分数据给客户端
      new_client_socket.send("hahaha".encode("gbk"))
    else:
      break
  # 关闭套接字
  new_client_socket.close()
  print("服务完毕,谢谢光临!")
# 如果将监听套接字关闭,会导致不能再次等待新的客户端到来
tcp_server_socket.close()
if __name__ == "__main__":
  main()

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python生成指定长度的随机数密码
Jan 23 Python
Python读写Excel文件方法介绍
Nov 22 Python
使用Python下的XSLT API进行web开发的简单教程
Apr 15 Python
python3+PyQt5使用数据库表视图
Apr 24 Python
pyspark 读取csv文件创建DataFrame的两种方法
Jun 07 Python
pycharm恢复默认设置或者是替换pycharm的解释器实例
Oct 29 Python
python+ffmpeg批量去视频开头的方法
Jan 09 Python
pandas-resample按时间聚合实例
Dec 27 Python
python实现秒杀商品的微信自动提醒功能(代码详解)
Apr 27 Python
Python如何合并多个字典或映射
Jul 24 Python
Python+unittest+requests 接口自动化测试框架搭建教程
Oct 09 Python
python制作一个简单的gui 数据库查询界面
Nov 19 Python
Django admin禁用编辑链接和添加删除操作详解
Nov 15 #Python
django实现类似触发器的功能
Nov 15 #Python
Python socket实现的文件下载器功能示例
Nov 15 #Python
Django通过dwebsocket实现websocket的例子
Nov 15 #Python
Python numpy线性代数用法实例解析
Nov 15 #Python
Django中提示消息messages的设置方式
Nov 15 #Python
调用其他python脚本文件里面的类和方法过程解析
Nov 15 #Python
You might like
apache rewrite_module模块使用教程
2008/01/10 PHP
discuz论坛 用户登录 后台程序代码
2008/11/27 PHP
php读取文件内容到数组的方法
2015/03/16 PHP
WordPress导航菜单的滚动和淡入淡出效果的实现要点
2015/12/14 PHP
ThinkPHP中order()使用方法详解
2016/04/19 PHP
PHP数据库操作二:memcache用法分析
2017/08/16 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
2019/12/20 PHP
用客户端js实现带省略号的分页
2013/04/27 Javascript
简单学习JavaScript中的for语句循环结构
2015/11/10 Javascript
微信开发 使用picker封装省市区三级联动模板
2016/10/28 Javascript
详解JS-- 浮点数运算处理
2016/11/28 Javascript
前端构建工具之gulp的配置与搭建详解
2017/06/12 Javascript
seajs中最常用的7个功能、配置示例
2017/10/10 Javascript
五步轻松实现JavaScript HTML时钟效果
2020/03/25 Javascript
微信小程序云开发之使用云存储
2019/05/17 Javascript
Vue动态生成表格的行和列
2019/07/18 Javascript
js单线程的本质 Event Loop解析
2019/10/29 Javascript
Python基础之函数用法实例详解
2014/09/10 Python
浅谈机器学习需要的了解的十大算法
2017/12/15 Python
Django自定义过滤器定义与用法示例
2018/03/22 Python
python中的&&及||的实现示例
2019/08/07 Python
Python argparse模块使用方法解析
2020/02/20 Python
如何基于Python和Flask编写Prometheus监控
2020/11/25 Python
移动端html5 meta标签的神奇功效
2016/01/06 HTML / CSS
html5页面结构_动力节点Java学院整理
2017/07/10 HTML / CSS
Smallable意大利家庭概念店:设计师童装及家居装饰
2018/01/08 全球购物
什么时候用assert
2015/05/08 面试题
建筑工程专业大学生求职信
2014/04/23 职场文书
爱耳日活动总结
2014/04/30 职场文书
2015年业务工作总结范文
2015/04/10 职场文书
2015年骨干教师工作总结
2015/05/26 职场文书
远程教育培训心得体会
2016/01/09 职场文书
干货:如何写好观后感 !
2019/05/21 职场文书
FP-growth算法发现频繁项集——发现频繁项集
2021/06/24 Python
MySQL数据库 任意ip连接方法
2022/05/20 MySQL
Android学习之BottomSheetDialog组件的使用
2022/06/21 Java/Android