复习三次握手四次挥手

思考
为什么要三次手握
为什么要四次挥手

案例演练

步骤

一, 来一个tcp服务端与客户端的代码,实现通信循环

服务端

import socket
info_size = 1024
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(("", 8089))
server.listen(5)
conn, addr = server.accept()
print('客户端来了', addr)
info_b = conn.recv(info_size)
print('收到客户端的消息', info_b)
conn.send("收到了,bye".encode("utf8"))
conn.close()
server.close()

客户端

import socketclient = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(("127.0.0.1", 8089))
client.send("hehe".encode("utf8"))
info_b = client.recv(1024)
print("来自服务端", info_b.decode("utf8"))
client.close()

二,明确阻塞的地点会有哪些位置,尝试发送一个空消息(即发消息的时候直接回车)

三,明确socket收发消息的原理,发消息发到哪里,收消息从哪里收

四,尝试一下,当客户端突然断开的时候,会报错

要做好异常的处理, try…except

另外要了解

在其它的操作系统上,如果客户端突然断开,服务端不报错,但是会反复的收空

因此如果不停的收空,就需要断开和这个客户端的连接了,通过 if not 收到的消息: break

汇总客户端与服务端的代码结构

主要实现连接循环与通讯循环

连接循环,可以反复的接待新的来客

通讯循环,可以让客户端与服务端反复的沟通

》服务端代码格式

》客户端代码格式

》补充,关于服务端重启时的问题

服务端重启的时候,由于会存在着四次挥手的一个延时

服务器的端口不会马上释放

因此会有报错发生

如何解决报错,详见

python-socket客户服务端的传输原理异常关闭的情况相关推荐

  1. java 监听客户端的退出_Java socket 服务端如何监控客户端异常关闭?

    慕函数4003404 关闭是会抛出异常的,捕捉之后进行处理,退出循环 @Override public void run() { Boolean isExit = false; while (!isE ...

  2. python 服务端与c++客户端通讯_[原创]python socket 服务端 与 c++客户端通讯,发包内容加密,支持大文件,并发...

    代码经过网络搜索,综合算是原创吧.py脚本为服务端 项目文件在 https://github.com/jinjie412/service_client_socket import socketserv ...

  3. python socket 游戏_python socket模拟游戏开服

    python socket服务端 #!/usr/bin/python #-*- coding: utf-8 -*- import socket import os,sys host='127.0.0. ...

  4. php socket 握手,python Socket之客户端和服务端握手详细介绍

    这篇文章主要为大家详细介绍了python Socket之客户端和服务端握手,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 简单的学习下利用socket来建立客户端和服务端之间的连接并且发送数据 1 ...

  5. C# Socket服务端与客户端通信(包含大文件的断点传输)

    步骤: 一.服务端的建立 1.服务端的项目建立以及页面布局 2.各功能按键的事件代码 1)传输类型说明以及全局变量 2)Socket通信服务端具体步骤:   (1)建立一个Socket   (2)接收 ...

  6. python socket 大文件_python之socket运用之传输大文件

    socket建议最大的传输单元是8192个字符,但是如果超过8192就会出现问题,我们可以用下面的方法处理 客户端代码 import subprocess import socket ip_bind ...

  7. python通信原理实验报告_【Python之旅】第五篇(一):Python Socket通信原理-阿里云开发者社区...

    只要和网络服务涉及的,就离不开Socket以及Socket编程,下面就说说Python Socket通信的基本原理. 1.Socket socket也称作"套接字",用于描述IP地 ...

  8. Python 套接字-判断socket服务端有没有关闭的方法实例演示,查看socket运行状态

    通过 getattr(socket, '_closed') 的返回值可以判断服务端的运行状态. True 是关闭状态,False 是运行中. 实例代码展示: import socketip = 'lo ...

  9. php socket read 阻塞,php socket编程:客户端异常关闭导致服务端中断的问题

    socket_recv和socket_read都可以用于读取socket数据,不过二者有差别,推荐使用socket_recv. 原因如下: 1.socket_recv支持多种flag,用于不同场景 2 ...

最新文章

  1. spring_在Spring中使用多个动态缓存
  2. CSS基础教程(企业内部培训)
  3. Python数据可视化2.6 一些最好的可视化实践
  4. getElementsByclassName
  5. pysparkpython版本_pyspark修改python版本
  6. JavaFX场景切换代码示例
  7. ${project.build.directory}
  8. 圆环内外圆毛刺(凸起)缺口(凹陷)检测halcon
  9. Android 4 学习(19):Services
  10. db2中null和空值的区别_MySQL数据库的表中 NULL和空值 到底有什么区别呢?
  11. Spring Cloud与微服务学习总结(8)——Spring Boot、微服务架构和大数据治理三者之间的故事
  12. 深度装机大师一键重装_deep深度装机大师一键安装Win10 64位旗舰版
  13. 什么是城市大数据?大数据如何应用在智慧城市中?
  14. 虚拟机使用本地服务器配置,虚拟机搭建本地云服务器配置
  15. OA办公系统源码下载_PHPOA源码
  16. Nessus最新版8.15安装教程
  17. 忘记准考证号获取四六级成绩的方法
  18. python中从键盘输入的代码_Python中如何获取键盘输入
  19. python连接wss走自己的代理
  20. 交通-地铁客流量python时间序列预测

热门文章

  1. canvas动画 - 背景线条 - 应用篇
  2. 94级计算机科学,清华大学计算机科学与技术系
  3. 卡通自适应网址发布页源码
  4. java代码雨_代码雨 - java代码库 - 云代码
  5. java 字符查找 截断_java字符串常用操作(查找、截取、分割)
  6. C# unicode 编码 和 解码
  7. Swift快速参考手册
  8. Multimedia (MP3, MPEG-4, AVI, DiVX, etc.) support in Ubuntu 12.04 (Precise)
  9. flex3 接受外部参数
  10. Python_51job爬虫