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中常用操作字符串的函数与方法总结
Feb 04 Python
深入理解python函数递归和生成器
Jun 06 Python
matplotlib中legend位置调整解析
Dec 19 Python
Python全排列操作实例分析
Jul 24 Python
Python爬取qq空间说说的实例代码
Aug 17 Python
PyTorch搭建一维线性回归模型(二)
May 22 Python
python 设置xlabel,ylabel 坐标轴字体大小,字体类型
Jul 23 Python
Python 实现大整数乘法算法的示例代码
Sep 17 Python
Python cookie的保存与读取、SSL讲解
Feb 17 Python
JAVA及PYTHON质数计算代码对比解析
Jun 10 Python
如何基于Python和Flask编写Prometheus监控
Nov 25 Python
Python Matplotlib库实现画局部图
Nov 17 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
php curl 上传文件代码实例
2015/04/27 PHP
PHP中把有符号整型转换为无符号整型方法
2015/05/27 PHP
64位windows系统下安装Memcache缓存
2015/12/06 PHP
详细分析PHP 命名空间(namespace)
2020/06/30 PHP
CSS和Javascript简单复习资料
2010/06/29 Javascript
JavaScript基本编码模式小结
2012/05/23 Javascript
url参数中有+、空格、=、%、&、#等特殊符号的问题解决
2013/05/15 Javascript
JavaScript字符串对象slice方法入门实例(用于字符串截取)
2014/10/16 Javascript
jquery实现经典的淡入淡出选项卡效果代码
2015/09/22 Javascript
jQuery购物网页经典制作案例
2016/08/19 Javascript
JavaScript日期选择功能示例
2017/01/16 Javascript
Node.js环境下Koa2添加travis ci持续集成工具的方法
2017/06/19 Javascript
在Js页面通过POST传递参数跳转到新页面详解
2017/08/25 Javascript
详解Vue 动态组件与全局事件绑定总结
2018/11/11 Javascript
layer.js open 隐藏滚动条的例子
2019/09/05 Javascript
vue 移动端记录页面浏览位置的方法
2020/03/11 Javascript
vuejs实现下拉框菜单选择
2020/10/23 Javascript
[48:44]2014 DOTA2国际邀请赛中国区预选赛5.21 TongFu VS HGT
2014/05/22 DOTA
[51:29]Alliance vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
Python 窗体(tkinter)按钮 位置实例
2019/06/13 Python
使用Python实现跳一跳自动跳跃功能
2019/07/10 Python
Python实现常见的几种加密算法(MD5,SHA-1,HMAC,DES/AES,RSA和ECC)
2020/05/09 Python
django 解决自定义序列化返回处理数据为null的问题
2020/05/20 Python
python正则表达式 匹配反斜杠的操作方法
2020/08/07 Python
前台接待岗位职责
2013/12/03 职场文书
办公室经理岗位职责
2014/01/01 职场文书
给老婆的婚前保证书
2014/02/01 职场文书
2014国培学习感言
2014/03/05 职场文书
生物工程专业求职信
2014/09/03 职场文书
教师国庆节演讲稿范文2014
2014/09/21 职场文书
小班下学期个人总结
2015/02/12 职场文书
计生个人工作总结
2015/02/28 职场文书
青年联谊会致辞
2015/07/31 职场文书
幼儿园大班教育随笔
2015/08/14 职场文书
学法用法心得体会(2016推荐篇)
2016/01/21 职场文书
Python 数据可视化工具 Pyecharts 安装及应用
2022/04/20 Python