python while break try 无法中断_解码不能正常工作并且while循环不能正确中断python...

这是一个使用Python中的TCP套接字的文件传输应用程序。文件传输协议将包含一个名为ftps.py文件一个客户打电话来ftpc.py文件. 在

文件传输应用程序将使用一个简单的协议。前4个字节(按网络字节顺序)将包含后续文件中的字节数。接下来的20个字节将包含文件的名称(假设名称可以容纳20个字节)。接下来的TCP流中的其余字节将包含文件中的数据。在

我在不同的计算机上运行客户机程序和服务器程序,但有两个错误:

1) 当我编码文件名并将其发送到套接字时,当服务器端接收并解码时,文件名是不正确的

2)服务器端似乎陷入了while循环,我不知道为什么

客户import socket

import sys

import os

filename=sys.argv[2]

print filename

if len(sys.argv) > 1 :

print('Trying to connect...')

s = socket.socket()

ip_add=(sys.argv[1])

print(ip_add)

s.connect((ip_add, 4000))

print('Connected. Wating for command.')

while True:

cmd = s.recv(24)

if cmd == 'getsize':

print('"getsize" command received.')

statinfo=os.stat(filename)

byte_size=statinfo.st_size

size_str=str(byte_size)

s.sendall(size_str)

if cmd == 'getfilename':

print('"getfilename" command received.')

formatted_name = filename.rjust(20)

fname = formatted_name.lstrip()

print(fname)

encoded_filename=fname.encode('utf-8')

s.sendall(encoded_filename)

if cmd == 'getfile':

print('"getfile" command received. Going to send file.')

file_input = open(sys.argv[2], 'rb')

while True:

buff = file_input.read(512)

if len(buff) == 0:

break

s.sendall(buff)

print('File transmission done.')

if cmd == 'end':

print('"end" command received. Teminate.')

break

file_input.close()

f.close()

服务器

^{pr2}$

以下是服务器程序的终端输出:% python ftps.py

Waiting for clinet to connect...

Connected. Going to receive file.

1797

Filename: 55

客户端输出:% python ftpc.py 164.107.113.20 2.jpg

2.jpg

Trying to connect...

164.107.113.20

Connected. Wating for command.

"getsize" command received.

"getfilename" command received.

2.jpg

"getfile" command received. Going to send file.

File transmission done.

文件名:55,应该是文件名:2.jpg

程序在这一点上陷入了一个循环。。有人知道为什么会这样吗?在

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/368354.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML中三种定位relative,absolute,fixed后,盒子的百分比宽度及位置易错点

1 . 相对定位relative:顾名思义,相对定位是相对于自己的位置来进行偏移,如下图: 以盒子中心为基准,为每条边的正方向,例: 向右移动20px :  代码为left:20px;或者right:-20px; 向下移动20px : 代码为top:20px;或者bottom:-20px; 2 . 绝对定位:absolute 以其第一个定位的…

JMeter定制功能实现

JMeter提供了可在采样器中使用的功能。 在编写复杂的测试计划时,您会感到JMeter缺少某些方法。 您使用Beanshell脚本定义自己的自定义方法。 JMeter调用Beanshell解释器来运行脚本。 只要您不产生高负载(大量线程),此方法就可以正…

vue安装

1、查看版本 npm -v cnpm -v 升级 npm cnpm install npm -g 2、cnpm install vue 3、全局安装 vue-cli cnpm install --global vue-cli 4、创建一个基于webpack模板的新项目 vue init webpack my-project 5、运行项目 cd my-project cnpm install cnpm run dev 6、报错 解决办…

BZOJ.4516.[SDOI2016]生成魔咒(后缀自动机 map)

题目链接 后缀数组做法见这。 直接SAMmap。对于每个节点其产生的不同子串数为len[i]-len[fa[i]]。 //15932kb 676ms #include <map> #include <cstdio> #include <cctype> #include <algorithm> //#define gc() getchar() #define MAXIN 1500000 #de…

python运行结果图_[宜配屋]听图阁

首先使用内置模块os.>>> import os>>> code os.system("pwd && sleep 2")# /User/zhipeng>>> print code# 0问题是 os.system 只能获取到结束状态使用内置模块 subprocess>>> import subprocess>>> subproces…

母函数

首先是4个重要的泰勒展开式 1. 2. 3.(e(-x)e(x))/21x^2/2!x^4/4!x^6/6!...... 4.(e(x)-e(-x))/2xx^3/3!x^5/5!x^7/7!...... 之后是两类母函数的应用 总体思路&#xff1a;利用&#xff08;x^ax^bx^c&#xff09;指数表示对某一物品取用的数量&#xff0c;系数表示方案数 1.普通…

JDK 7的算法和数据结构

在定期检查JDK中是否存在一种或另一种标准算法时&#xff0c;我决定进行这种索引。 有趣的是&#xff0c;为什么其中包含一些著名的数据结构或算法&#xff0c;而另一些却没有&#xff1f; 此调查的格式仅涉及JDK的算法和数据结构的关键特性和功能&#xff0c;所有详细信息和完…

如何在本地运行查看github上的开源项目

看中了一款很多星星的github的项目&#xff0c;想把这个项目拉到自己的电脑上运行查看项目效果&#xff0c;该怎么做&#xff1f;示例&#xff1a;我们今天要看的 github项目地址&#xff1a;https://github.com/lzxb/vue-cnode1.克隆项目&#xff1a; git clone [https://gith…

box-shadow技巧分享

box-shadow box-shadow在定义里是这么说的&#xff1a;"box-shadow 属性向框添加一个或多个阴影。" 是的&#xff0c;和他的名字一样&#xff0c;这个属性固然是用来制造阴影效果让页面更有立体感的。 语法&#xff1a; box-shadow: h-shadow v-shadow blur sprea…

puppet enc mysql_精通Puppet配置管理工具

目  录第1章 开始使用Puppet11.1 什么是Puppet11.1.1 部署21.1.2 配置语言和资源抽象层31.1.3 事务层51.2 选择正确的Puppet版本51.3 我能混用Puppet的版本吗61.4 安装Puppet71.4.1 在Red Hat企业版Linux和Fedora上面安装Puppet71.4.2 在Debian和Ubuntu上安装Puppe…

Web测试实践——每日例会记录12.31(1)

姓名 主要负责部分 完成情况 储志峰 刘伟清 阶段一&#xff0c;软件评测。对华科软院和计院的网站展开对比分析&#xff0c;主要体现在功能、界面等方面。描述网站的缺陷。 √ 吕尚维 阶段二&#xff0c;用户调研。对使用华科软院网站的某个用户展开调研&#xff0c;采访…

Spring JPA数据+休眠+ MySQL + Maven

在Spring MVC的帮助下开发Web应用程序意味着要创建几个逻辑架构层。 层之一是DAO&#xff08;存储库&#xff09;层。 它负责与数据库进行通信。 如果您至少开发了DAO层一次&#xff0c;则应该知道它涉及许多样板代码。 Spring Data本身就是与DAO相关的日常工作的一部分。 在帖…

关于DJANGO MODELS的个人理解和RELATED_NAME的使用

转自&#xff1a;http://www.cnblogs.com/blogofwyl/p/4283513.html作为一个新人(刚刚大学还没有毕业就出来实习&#xff0c;可以说是真的什么都不知到&#xff0c;什么都要重新学&#xff0c;但是这样真的可以锻炼自己的意志力和能力)。现在在公司是前端和后端一起坐&#xff…

HTML的入门概念

超文本<a> 文本或图像都可以用作链接的标签。使用“..”可以连接到源文件的上层文件夹。“..”表示“父文件夹”。 <a href"目标网址#锚点" name"页面锚点名称" title"鼠标滑过显示的文本">链接显示的文本</a> <a href&…

PDF之pdfkit

说起pdf就想到了一款很适用的工具&#xff0c;那就是pdfkit&#xff0c;在前几天的项目中&#xff0c;有一个功能要实现&#xff0c;为了实现这一个功能&#xff0c;于是我大海茫茫中查询各种百科&#xff0c;不负众望的让我找到了我心怡的工具&#xff0c;想必也就是它了。好了…

015迭代器

注意迭代器和可迭代对象不同#迭代器&#xff1a;1、有iter方法&#xff0c;2、有next方法li[1,2,3,4,5]diter(li) # 等于li.__iter__()print(d) # <list_iteratorobjectat0x00000174316CC3C8>可以通过next方法取出元素。for循环就是这样的。for循环内部做的三件事1、调用…

CSS属性之attr()

attr()准确的说&#xff0c;不应该是一个属性&#xff0c;而是一个CSS的函数&#xff0c;我们先看看MDN上的介绍吧&#xff1a; Summary The attr() CSS function is used to retrieve the value of an attribute of the selected element and use it in the style sheet. It c…

番石榴15 –新功能

本月初发布了新版本的Guava库&#xff0c;其中包含一些新功能和改进。 以下是此版本中一些重要的API新增功能的概述&#xff1a; 1.逃脱者 Escapers使您可以“转义”字符串中的特殊字符&#xff0c;以使字符串符合特定格式。 例如&#xff0c;在XML中&#xff0c;必须将<字…

MySQL大小写敏感的解决方案

前言&#xff1a;对于MySQL的大小写敏感的影响&#xff0c;笔者在一个小项目中深刻的体会到&#xff1a;当想要查询一条数据时&#xff0c;总是出来两条或多条&#xff0c;后来发现是大小写敏感造成的原因&#xff0c;本文就该问题提出解决方案。 1.MySQL大小写敏感的控制 mysq…

java主类型_Java主类结构:基本数据类型

Java语言是面向对象设计的语言&#xff0c;java车光绪的基本组成单元是类&#xff0c;类体中有包括属性与方法两部分。每一个应用程序都需要main()方法&#xff0c;含有main()方法的类成为主类建立一个java首先要建立包package Number;//建立的package包名为numberpuublic clas…