socket服务端在接收socket客户端时抛出异常

ConnectionAbortedError: [WinError 10053] 您的主机中的软件中止了一个已建立的连接。

socket服务端代码

#-*- coding:utf-8 -*-
# Author: Jiang Zu Xing
import socket,time
socketserver=socket.socket()
host="0.0.0.0"
port=9999
socketserver.bind((host,port))
socketserver.listen(5)
while True:
client,addr=socketserver.accept()
print("连接来自:",addr)
msg="显示服务器返回数据"
while True:
print("准备接收数据")
data = client.recv(1024)
print("接收数据完毕")
if data ==0:
print("no data")
break
else:
print(data.decode('utf-8'))
client.send(msg.encode())
client.close()
socketserver.close()

socket客户端代码

#-*- coding:utf-8 -*-
# Author: Jiang Zu Xing
import socket,time
socket_client=socket.socket()
host="192.168.1.35"
port=9999
data=""
socket_client.connect((host,port))
print("开始发送")
socket_client.send(data.encode())
print("开始接收")
msg=socket_client.recv(1024)
print("接收结束")
print(msg.decode('utf-8'))
time.sleep(100)

异常

Traceback (most recent call last):
File "C:/Users/Administrator/Desktop/jiang/python/demo/网络编程/socket_server.py", line 15, in <module>
data = client.recv(1024)
ConnectionAbortedError: [WinError 10053] 您的主机中的软件中止了一个已建立的连接。

出现问题:

刚刚学习socket写的练手脚本,出现以上异常有两个原因

1、服务器端Receive数据时,关闭了客户端就会强制关闭连接,就会出现上面的错误提示;

2、客户端线程执行完,if not data 写错,不能跳出循环导致出错。所以写是if not data ,是用来判断客户端线程是否结束,然后执行退出。

建议:

在接收完数据后退出死循环,不要让recv()函数阻塞住,关闭客户端(文件发送端)前建议发送一个消息告诉服务器端(文件接收方)“我要断开连接了”,然后两方都关闭连接close

ConnectionAbortedError: [WinError 10053] 您的主机中的软件中止了一个已建立的连接的更多相关文章

  1. ConnectionAbortedError: [WinError 10053] 你的主机中的软件中止了一个已建立的连接

    Traceback (most recent call last): File "C:\Users\Administrator\AppData\Local\Programs\Python\P ...

  2. Django项目运行时出现self.status.split(' ',1)[0], self.bytes_sent,ConnectionAbortedError: [WinError 10053] 你的主机中的软件中止了一个已建立的连接。

    [02/Nov/2018 09:46:51] "GET /new_industry/category HTTP/1.1" 200 2891792 Traceback (most r ...

  3. Django报错:ConnectionAbortedError: [WinError 10053] 你的主机中的软件中止了一个已建立的连接。

    ajax请求时加上 async : false, $.ajax({ url:"{% url 'article:article_post' %}", {#一定不要写成小写了,坑了好久 ...

  4. System.getProperty()引起的悲剧--您的主机中的软件中止了一个已建立的连接

    我已无法形容此刻我的心情.. 本来是已经写好的netty5的demo程序,server和client之间创建tcp长连接的..然后随便传点数据的简单demo..然后今天试了一下tcp粘包的例子,用到了 ...

  5. java.io.IOException: 您的主机中的软件中止了一个已建立的连接解决办法

    问题现象和http://hi.baidu.com/cara_cloud/item/193a3ee327546d395a2d64be描述的一样,就是在eclipse的console栏中一直显示java. ...

  6. java.io.IOException: 你的主机中的软件中止了一个已建立的连接。

    1.异常表现:我在jsp文件中有一个<form>表单,里面有一个<button>保存事件按钮.<button  onclick="addOrUPdate()&q ...

  7. 如何解决tomcat中的应用报java.io.IOException: 您的主机中的软件中止了一个已建立的连接

    转载: 施勇: https://blog.csdn.net/shiyong1949/article/details/72845634 这两天突然看到日志文件中有“java.io.IOException ...

  8. tomcat报错:java.io.IOException: 您的主机中的软件中止了一个已建立的连接。

    tomcat报错: org.apache.catalina.connector.ClientAbortException: java.io.IOException: 您的主机中的软件中止了一个已建立的 ...

  9. Caused by: java.io.IOException: 您的主机中的软件中止了一个已建立的连接。

    异常详情 2017-07-16 10:55:26,218 ERROR [500.jsp] - java.io.IOException: 你的主机中的软件中止了一个已建立的连接. org.apache. ...

随机推荐

  1. 广播频道-BroadcastChannel

    BroadcastChannel,就字面意思来言,叫做“广播频道”,官方文档说,该API是用于同源不同页面之间完成通信的功能. 1. 概况 它与window.postMessage的区别就是,Broa ...

  2. Python-类的绑定方法与非绑定方法

    类中定义的函数分成两大类 一:绑定方法(绑定给谁,谁来调用就自动将它本身当作第一个参数传入): 绑定到类的方法:用classmethod装饰器装饰的方法. 为类量身定制 类.boud_method() ...

  3. Python_生成随机百分比的方法

    可以使用random模块去实现,给定1到100的空间,使用random的choice的方法随机选取一个数字,当这个数字在某个区间时就可以认定为出发了指定的百分比的概率. 这个简单的逻辑也可以在需要时扩 ...

  4. ~/.bashrc与/etc/profile的区别

    ~/.bashrc:该文件包含专用于某个用户的bash shell的bash信息,当该用户登录时以及每次打开新的shell时,该文件被读取. /etc/profile中设定的变量(全局)的可以作用于任 ...

  5. MySql concat与字符转义

    mysql函数之四:concat() mysql 多个字段拼接 - duanxz - 博客园https://www.cnblogs.com/duanxz/p/5098875.html mysql 多个 ...

  6. 六、es6 map

    一.map的特点 JavaScript 的对象(Object),本质上是键值对的集合(Hash 结构),但是传统上只能用字符串当作键.这给它的使用带来了很大的限制. 为了解决这个问题,ES6 提供了 ...

  7. spring boot中的约定优于配置

    Spring Boot并不是一个全新的框架,而是将已有的Spring组件整合起来. Spring Boot可以说是遵循约定优于配置这个理念产生的.它的特点是简单.快速和便捷. 既然遵循约定优于配置,则 ...

  8. MyEclipse10 复制之前的项目部署到tomcat时项目名称对不上,还是复制前的项目名称,哪里修改设置

    工程 -- 右键属性 -- Myeclispse -- web修改一下发布名字就可以了.

  9. TextView不用ScrollViewe也可以滚动的方法

    转自:http://www.jb51.net/article/43377.htm android TextView不用ScrollViewe也可以滚动的方法. TextView textview = ...

  10. static关键字的用法

    静态变量和静态方法 static关键字的基本用法: 1.修饰变量:被static修饰的变量属于类变量,可以用类名.变量名来引用,而不用直接new一个对象来引用. 2.修饰方法:被static修饰的方法 ...