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获取网页状态码示例
Mar 30 Python
小结Python用fork来创建子进程注意事项
Jul 03 Python
解决python文件字符串转列表时遇到空行的问题
Jul 09 Python
Python解决线性代数问题之矩阵的初等变换方法
Dec 12 Python
详解numpy.meshgrid()方法使用
Aug 01 Python
Django ORM多对多查询方法(自定义第三张表&ManyToManyField)
Aug 09 Python
对python中assert、isinstance的用法详解
Nov 27 Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
Apr 02 Python
Python 将 QQ 好友头像生成祝福语的实现代码
May 03 Python
python高级特性简介
Aug 13 Python
Django用内置方法实现简单搜索功能的方法
Dec 18 Python
使用Python通过企业微信应用给企业成员发消息
Apr 18 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
杏林同学录(九)
2006/10/09 PHP
PHP提取中文首字母
2008/04/09 PHP
解析php函数method_exists()与is_callable()的区别
2013/06/21 PHP
如何使用Gitblog和Markdown建自己的博客
2015/07/31 PHP
浅谈PHP之ThinkPHP框架使用详解
2020/07/21 PHP
for 循环性能比较 提高for循环的效率
2009/03/19 Javascript
jQuery实现表单input中提示文字value随鼠标焦点移进移出而显示或隐藏的代码
2010/03/21 Javascript
jquery的相对父元素和相对文档定位示例代码
2013/08/02 Javascript
第五章之BootStrap 栅格系统
2016/04/25 Javascript
jQuery与JS加载事件用法分析
2016/09/04 Javascript
jquery仿苹果的时间/日期选择效果
2017/03/08 Javascript
jQuery设置图片等比例缩小的方法
2017/04/29 jQuery
详解用node搭建简单的静态资源管理器
2017/08/09 Javascript
Mac 安装 nodejs方法(图文详细步骤)
2017/10/30 NodeJs
去掉vue 中的代码规范检测两种方法(Eslint验证)
2018/03/21 Javascript
深入浅析Vue.js中 computed和methods不同机制
2018/03/22 Javascript
Three.js中矩阵和向量的使用教程
2019/03/19 Javascript
NodeJS读取分析Nginx错误日志的方法
2019/05/14 NodeJs
go和python调用其它程序并得到程序输出
2014/02/10 Python
Python对小数进行除法运算的正确方法示例
2014/08/25 Python
python进阶教程之模块(module)介绍
2014/08/30 Python
Python设置默认编码为utf8的方法
2016/07/01 Python
TensorFlow神经网络优化策略学习
2018/03/09 Python
python实现一个简单的udp通信的示例代码
2019/02/01 Python
django项目环境搭建及在虚拟机本地创建django项目的教程
2019/08/02 Python
基于python判断目录或者文件代码实例
2019/11/29 Python
利用Python实现某OA系统的自动定位功能
2020/05/27 Python
如何用用Python将地址标记在地图上
2021/02/07 Python
KIKO比利时官网:意大利彩妆品牌
2017/07/23 全球购物
轻金属冶金专业毕业生自荐信
2013/11/02 职场文书
医院实习介绍信
2014/01/12 职场文书
自我评价的范文
2014/02/02 职场文书
高三毕业寄语
2014/04/10 职场文书
关于读书的活动方案
2014/08/14 职场文书
2014年信息宣传工作总结
2014/12/18 职场文书
小学五年级(说明文3篇)
2019/08/13 职场文书