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错误处理详解
Sep 28 Python
python检测远程udp端口是否打开的方法
Mar 14 Python
wxPython中listbox用法实例详解
Jun 01 Python
Python变量和数据类型详解
Feb 15 Python
Random 在 Python 中的使用方法
Aug 09 Python
python 实现保存最新的三份文件,其余的都删掉
Dec 22 Python
Python+OpenCV实现旋转文本校正方式
Jan 09 Python
Python终端输出彩色字符方法详解
Feb 11 Python
python 删除excel表格重复行,数据预处理操作
Jul 06 Python
python高级特性简介
Aug 13 Python
python 实现朴素贝叶斯算法的示例
Sep 30 Python
在Python中字典按值排序的实现方法
Nov 12 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调用dll的实例操作动画与代码分享
2012/08/14 PHP
使用PHP会话(Session)实现用户登陆功能
2013/06/29 PHP
php函数连续调用实例分析
2015/07/30 PHP
简单的自定义php模板引擎
2016/08/26 PHP
php封装的smartyBC类完整实例
2016/10/19 PHP
PHP使用Curl实现模拟登录及抓取数据功能示例
2018/04/27 PHP
PHP设计模式之抽象工厂模式实例分析
2019/03/25 PHP
jquery tools之tooltip
2009/07/25 Javascript
jQuery判断checkbox是否选中的3种方法
2014/08/12 Javascript
jQuery validate验证插件使用详解
2016/05/11 Javascript
给Easyui-Datebox设置隐藏或者不可用的解决方法
2017/05/26 Javascript
vue 文件目录结构详解
2017/11/24 Javascript
详解layui弹窗父子窗口之间传参数的方法
2018/01/16 Javascript
学习RxJS之JavaScript框架Cycle.js
2019/06/17 Javascript
Vue中通过Vue.extend动态创建实例的方法
2019/08/13 Javascript
JS字符串和数组如何实现相互转化
2020/07/02 Javascript
[28:05]完美世界DOTA2联赛循环赛Inki vs DeMonsTer 第一场 10月30日
2020/10/31 DOTA
python多重继承新算法C3介绍
2014/09/28 Python
详细介绍Python中的偏函数
2015/04/27 Python
Python中列表的一些基本操作知识汇总
2015/05/20 Python
python中字符串变二维数组的实例讲解
2018/04/03 Python
详解用python实现基本的学生管理系统(文件存储版)(python3)
2019/04/25 Python
Python简单基础小程序的实例代码
2019/04/28 Python
梅尔频率倒谱系数(mfcc)及Python实现
2019/06/18 Python
解决.ui文件生成的.py文件运行不出现界面的方法
2019/06/19 Python
python 的 scapy库,实现网卡收发包的例子
2019/07/23 Python
python找出因数与质因数的方法
2019/07/25 Python
From CSV to SQLite3 by python 导入csv到sqlite实例
2020/02/14 Python
澳洲小众品牌的集合网站:BNKR
2018/02/23 全球购物
DNA基因检测和分析:23andMe
2019/05/01 全球购物
生产厂长岗位职责
2014/02/21 职场文书
营销与策划实训报告
2014/11/05 职场文书
2015年数学教研工作总结
2015/07/22 职场文书
苹果可能正在打击不进行更新的 App
2022/04/24 数码科技
Python matplotlib安装以及实现简单曲线的绘制
2022/04/26 Python
python开发制作好看的时钟效果
2022/05/02 Python