python-socket客户服务端的传输原理异常关闭的情况
复习三次握手四次挥手
思考
为什么要三次手握
为什么要四次挥手
案例演练
步骤
一, 来一个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客户服务端的传输原理异常关闭的情况相关推荐
- java 监听客户端的退出_Java socket 服务端如何监控客户端异常关闭?
慕函数4003404 关闭是会抛出异常的,捕捉之后进行处理,退出循环 @Override public void run() { Boolean isExit = false; while (!isE ...
- python 服务端与c++客户端通讯_[原创]python socket 服务端 与 c++客户端通讯,发包内容加密,支持大文件,并发...
代码经过网络搜索,综合算是原创吧.py脚本为服务端 项目文件在 https://github.com/jinjie412/service_client_socket import socketserv ...
- python socket 游戏_python socket模拟游戏开服
python socket服务端 #!/usr/bin/python #-*- coding: utf-8 -*- import socket import os,sys host='127.0.0. ...
- php socket 握手,python Socket之客户端和服务端握手详细介绍
这篇文章主要为大家详细介绍了python Socket之客户端和服务端握手,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 简单的学习下利用socket来建立客户端和服务端之间的连接并且发送数据 1 ...
- C# Socket服务端与客户端通信(包含大文件的断点传输)
步骤: 一.服务端的建立 1.服务端的项目建立以及页面布局 2.各功能按键的事件代码 1)传输类型说明以及全局变量 2)Socket通信服务端具体步骤: (1)建立一个Socket (2)接收 ...
- python socket 大文件_python之socket运用之传输大文件
socket建议最大的传输单元是8192个字符,但是如果超过8192就会出现问题,我们可以用下面的方法处理 客户端代码 import subprocess import socket ip_bind ...
- python通信原理实验报告_【Python之旅】第五篇(一):Python Socket通信原理-阿里云开发者社区...
只要和网络服务涉及的,就离不开Socket以及Socket编程,下面就说说Python Socket通信的基本原理. 1.Socket socket也称作"套接字",用于描述IP地 ...
- Python 套接字-判断socket服务端有没有关闭的方法实例演示,查看socket运行状态
通过 getattr(socket, '_closed') 的返回值可以判断服务端的运行状态. True 是关闭状态,False 是运行中. 实例代码展示: import socketip = 'lo ...
- php socket read 阻塞,php socket编程:客户端异常关闭导致服务端中断的问题
socket_recv和socket_read都可以用于读取socket数据,不过二者有差别,推荐使用socket_recv. 原因如下: 1.socket_recv支持多种flag,用于不同场景 2 ...
最新文章
- spring_在Spring中使用多个动态缓存
- CSS基础教程(企业内部培训)
- Python数据可视化2.6 一些最好的可视化实践
- getElementsByclassName
- pysparkpython版本_pyspark修改python版本
- JavaFX场景切换代码示例
- ${project.build.directory}
- 圆环内外圆毛刺(凸起)缺口(凹陷)检测halcon
- Android 4 学习(19):Services
- db2中null和空值的区别_MySQL数据库的表中 NULL和空值 到底有什么区别呢?
- Spring Cloud与微服务学习总结(8)——Spring Boot、微服务架构和大数据治理三者之间的故事
- 深度装机大师一键重装_deep深度装机大师一键安装Win10 64位旗舰版
- 什么是城市大数据?大数据如何应用在智慧城市中?
- 虚拟机使用本地服务器配置,虚拟机搭建本地云服务器配置
- OA办公系统源码下载_PHPOA源码
- Nessus最新版8.15安装教程
- 忘记准考证号获取四六级成绩的方法
- python中从键盘输入的代码_Python中如何获取键盘输入
- python连接wss走自己的代理
- 交通-地铁客流量python时间序列预测
热门文章
- canvas动画 - 背景线条 - 应用篇
- 94级计算机科学,清华大学计算机科学与技术系
- 卡通自适应网址发布页源码
- java代码雨_代码雨 - java代码库 - 云代码
- java 字符查找 截断_java字符串常用操作(查找、截取、分割)
- C# unicode 编码 和 解码
- Swift快速参考手册
- Multimedia (MP3, MPEG-4, AVI, DiVX, etc.) support in Ubuntu 12.04 (Precise)
- flex3 接受外部参数
- Python_51job爬虫