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 06 Python
用python实现百度翻译的示例代码
Mar 09 Python
python爬虫神器Pyppeteer入门及使用
Jul 13 Python
Python线上环境使用日志的及配置文件
Jul 28 Python
PIL对上传到Django的图片进行处理并保存的实例
Aug 07 Python
python使用 cx_Oracle 模块进行查询操作示例
Nov 28 Python
Python tkinter和exe打包的方法
Feb 05 Python
Pandas —— resample()重采样和asfreq()频度转换方式
Feb 26 Python
Python MySQLdb 执行sql语句时的参数传递方式
Mar 04 Python
Pyecharts 动态地图 geo()和map()的安装与用法详解
Mar 25 Python
vscode+PyQt5安装详解步骤
Aug 12 Python
Python Numpy之linspace用法说明
Apr 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 在线打包_支持子目录
2008/06/28 PHP
rrmdir php中递归删除目录及目录下的文件
2011/05/15 PHP
php防止SQL注入详解及防范
2013/11/12 PHP
php调整gif动画图片尺寸示例代码分享
2013/12/05 PHP
PHP常用字符串函数用法实例总结
2020/06/04 PHP
关于文本框的一些限制控制总结~~
2010/04/15 Javascript
jQuery获取文本节点之 text()/val()/html() 方法区别
2011/03/01 Javascript
jquery获取点击控件的绝对位置简单实例
2016/10/13 Javascript
Easy UI动态树点击文字实现展开关闭功能
2017/09/30 Javascript
vue登录路由验证的实现
2017/12/13 Javascript
详解React之父子组件传递和其它一些要点
2018/06/25 Javascript
详解Vue项目部署遇到的问题及解决方案
2019/01/11 Javascript
jquery实现自定义树形表格的方法【自定义树形结构table】
2019/07/12 jQuery
angularjs自定义过滤器demo示例
2019/08/24 Javascript
jquery实现图片无缝滚动 蒙版遮蔽效果
2020/01/11 jQuery
[49:31]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS BO3 第二场 1月29日
2021/03/11 DOTA
Python下singleton模式的实现方法
2014/07/16 Python
Python实现压缩和解压缩ZIP文件的方法分析
2017/09/28 Python
Python Socket编程之多线程聊天室
2018/07/28 Python
python实现微信小程序自动回复
2018/09/10 Python
Tensorflow分类器项目自定义数据读入的实现
2019/02/05 Python
Python自动化运维之Ansible定义主机与组规则操作详解
2019/06/13 Python
Python pandas.DataFrame调整列顺序及修改index名的方法
2019/06/21 Python
pytorch中的embedding词向量的使用方法
2019/08/18 Python
Python 私有属性和私有方法应用场景分析
2020/06/19 Python
python按顺序重命名文件并分类转移到各个文件夹中的实现代码
2020/07/21 Python
详解用selenium来下载小姐姐图片并保存
2021/01/26 Python
护理专业自我鉴定
2014/01/30 职场文书
质量标语大全
2014/06/12 职场文书
宣传标语大全
2014/07/01 职场文书
2014乡镇党政班子四风问题思想汇报
2014/09/14 职场文书
酒店工程部主管岗位职责
2015/04/16 职场文书
2015年暑期社会实践总结
2015/07/13 职场文书
2016国培研修心得体会
2016/01/08 职场文书
学校学习型党组织建设心得体会
2019/06/21 职场文书
Python获取指定日期是"星期几"的6种方法
2022/03/13 Python