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 相关文章推荐
Django使用Celery异步任务队列的使用
Mar 13 Python
python3.5 email实现发送邮件功能
May 22 Python
Python实现的knn算法示例
Jun 14 Python
使用NumPy和pandas对CSV文件进行写操作的实例
Jun 14 Python
Python 从相对路径下import的方法
Dec 04 Python
python利用插值法对折线进行平滑曲线处理
Dec 25 Python
python Matplotlib底图中鼠标滑过显示隐藏内容的实例代码
Jul 31 Python
python3.5 cv2 获取视频特定帧生成jpg图片
Aug 28 Python
python关闭占用端口方式
Dec 17 Python
pytorch下使用LSTM神经网络写诗实例
Jan 14 Python
pytorch  网络参数 weight bias 初始化详解
Jun 24 Python
如何通过命令行进入python
Jul 06 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
mysql 中InnoDB和MyISAM的区别分析小结
2008/04/15 PHP
PHP 数组基础知识小结
2010/08/20 PHP
修改PHP的memory_limit限制的方法分享
2012/02/21 PHP
php 对输入信息的进行安全过滤的函数代码
2012/06/29 PHP
Yii2针对游客、用户防范规则和限制的解决方法分析
2016/10/08 PHP
Laravel框架路由管理简单示例
2019/05/07 PHP
node.js适合游戏后台开发吗?
2014/09/03 Javascript
深入理解JavaScript系列(43):设计模式之状态模式详解
2015/03/04 Javascript
jquery实现的树形目录实例
2015/06/26 Javascript
js实现动态加载脚本的方法实例汇总
2015/11/02 Javascript
WEB前端实现裁剪上传图片功能
2016/10/17 Javascript
javascript实现无法关闭的弹框
2016/11/27 Javascript
AngularJS实现使用路由切换视图的方法
2017/01/24 Javascript
angular使用bootstrap方法手动启动的实例代码
2017/07/18 Javascript
vue中的模态对话框组件实现过程
2018/05/01 Javascript
简述JS浏览器的三种弹窗
2018/07/15 Javascript
详解适配器在JavaScript中的体现
2018/09/28 Javascript
详解为element-ui的Select和Cascader添加弹层底部操作按钮
2020/02/07 Javascript
js制作提示框插件
2020/12/24 Javascript
python中的__init__ 、__new__、__call__小结
2014/04/25 Python
Python使用pip安装报错:is not a supported wheel on this platform的解决方法
2018/01/23 Python
Python smtplib实现发送邮件功能
2018/05/22 Python
Python日志模块logging基本用法分析
2018/08/23 Python
python实现决策树分类(2)
2018/08/30 Python
使用 python pyautogui实现鼠标键盘控制功能
2019/08/04 Python
解决Django后台ManyToManyField显示成Object的问题
2019/08/09 Python
Python 继承,重写,super()调用父类方法操作示例
2019/09/29 Python
python 两种方法修改文件的创建时间、修改时间、访问时间
2020/09/26 Python
什么是Assembly(程序集)
2014/09/14 面试题
.NET是怎么支持多种语言的
2015/02/24 面试题
医学生实习自我鉴定
2013/09/27 职场文书
事业单位接收函
2014/01/10 职场文书
会计学专业学生的求职信范文
2014/01/27 职场文书
学校领导班子对照检查材料
2014/08/28 职场文书
邓小平理论心得体会
2014/09/09 职场文书
2014年房地产个人工作总结
2014/12/20 职场文书