[python3] pyton socket 同步通信举例

本文比较简单,适合入门用,作个笔记,方便日后抄写吐舌头


一个服务端,一个客户端,而且是阻塞方式,一次只能接受一个客户端连接并通信噢。


客户端发送‘bye', 结束与服务端的通信,如果发送’shutdown',服务端将会关闭自己!


服务端代码:

from socket import *
from time import ctimeHOST = ''
PORT = 21567
BUFSIZE = 1024
ADDR = (HOST, PORT)tcpSerSock = socket(AF_INET, SOCK_STREAM)
tcpSerSock.bind(ADDR)
tcpSerSock.listen(5)
quit = False
shutdown = Falsewhile True:print('waiting for connection...')tcpCliSock, addr = tcpSerSock.accept()print('...connected from: ', addr)while True:data = tcpCliSock.recv(BUFSIZE)data = data.decode('utf8')if not data:breakss = '[%s] %s' %(ctime(), data)tcpCliSock.send(ss.encode('utf8'))print(ss)if data == 'bye':quit = Truebreakelif data == 'shutdown':shutdown = Truebreakprint('Bye-bye: [%s: %d]' %(addr[0], addr[1]))tcpCliSock.close()if shutdown:break
tcpSerSock.close()
print('Server has been

客户端代码:

from socket import *HOST = 'localhost'
PORT = 21567
BUFSIZE = 1024
ADDR = (HOST, PORT)tcpCliSock = socket(AF_INET, SOCK_STREAM)
tcpCliSock.connect(ADDR)while True:data = input('>')if not data:continueprint('input data: [%s]' %data)tcpCliSock.send(data.encode('utf8'))rdata = tcpCliSock.recv(BUFSIZE)if not rdata:breakprint(rdata.decode('utf8'))if data == 'bye' or data == 'shutdown':breaktcpCliSock.close()

参考网址:  http://blog.163.com/yi_yixinyiyi/blog/static/136286889201152814341144/





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

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

相关文章

第三周仿真作业

1.设计要求 结合本周学习的直流电机机械特性,用Modelica设计和仿真一个直流电机串电阻启动过程,具体要求如下: 1)电机工作在额定电压和额定磁通下,采用串三段或四段电阻启动,整个启动过程电枢电流中不能超过…

分享一个自定义的 console 类,让你不再纠结JS中的调试代码的兼容

问题的产生 在写JS的过程中,为了调试我们常常会写很多 console.log、console.info、console.group、console.warn、console.error代码来查看JS的运行情况,但发布时又因为IE不支持console,又要去掉这些代码,一不小心就会出错。 本文…

OS X 平台的 8 个终端实用工具

From: http://blog.jobbole.com/72238/ 本文由 伯乐在线 - shinancao 翻译自 mitchchn。欢迎加入iOS小组。转载请参见文章末尾处的要求。 OS X 终端对外开放了许多很强大的UNIX实用工具和脚本。如果你是从Linux转过来的,你会发现许多熟悉的命令正是按照你想的那样…

内存操作流

可以将输出的位置设置在内存上,此时就要使用ByteArrayInputStream、ByteArrayOutputStream来完成输入和输出功能。 ByteArrayInputStream主要完成将内容写入到内存中 ByteArrayOutputStream的功能主要是将内存中的数据输出 import java.io.ByteArrayInputStream; im…

mysql 中 group_concat()用法

基本语法:group_concat([DISTINCT] 要连接的字段 [Order BY 排序字段 ASC/DESC] [Separator 分隔符]) 初始数据: 以name分组,将money打印在一行,默认,分隔: select aa.namename , GROUP_CONCAT( money ) money from a…

H264(NAL简介与I帧判断)

From: http://blog.csdn.net/jefry_xdz/article/details/8461343 1、NAL全称Network Abstract Layer, 即网络抽象层。 在H.264/AVC视频编码标准中,整个系统框架被分为了两个层面:视频编码层面(VCL)和网络抽象层面&#…

让VS2010添加新类时自动添加public关键字(来自dudu博文)

以下是dudu 老大的详细步骤: http://www.cnblogs.com/dudu/archive/2011/08/30/2159894.html 里面有一个重要步骤,如何修改模板class.cs文件,请看下面截图 1、下载一个解压软件7-zip_9.25Alpha(本人是win7 64位,不支持…

H.264视频编码在VC++.Net中的实现

From: http://blog.csdn.net/xwchen/article/details/5052981 引言:H.264编码技术是俱乐部在过去一段时间内研究的一个方向,对该编码技术进行过实际的开发和应用,并取得了很大的收获。下面将重点介绍H.264视频编码在VC.Net中的实现。 1. H.264编码的介…

TCP/IP ---封装与分用

封装 当应用程序用T C P传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当作一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息),该过程如图1 - 7所示。T C P传给I P的数…

远程计算机需要网络级别身份验证,而您的计算机不支持该验证,请联系您的系统管理员或者技术人员来获得帮助...

故障:“远程计算机需要网络级别身份验证,而您的计算机不支持该验证,请联系您的系统管理员或者技术人员来获得帮助” 故障症状:当您使用Windows XP“远程桌面连接”工具去连接Windows Vistas或Windows Server 2008的远程桌面、终端…

CRC32算法详细推导(1)

From: http://blog.csdn.net/sparkliang/article/details/5671510 CRC算法详解(1) 作为blog再次发出来,详细描述一下CRC32算法的推导过程。 CRC 算法的数学基础 CRC 算法的数学基础就不再多啰嗦了,到处都是,简单提一…

CRC32算法详细推导(2)

From: http://blog.csdn.net/sparkliang/article/details/5671977 CRC算法详解(2) 初见 Table-Driven 变换到上面的方法后,我们离 table-driven 的方法只有一步之遥了,我们知道一个字节能表示的正整数范围是 0~255,步…

每天一点Swift(五)控制器的生命周期和SizeClass

字数358 阅读19 评论0 喜欢0 初始化init-->awakeFromNib--> prepare a segue --> SB去设置outlets --> viewDidLoad 1. viewDidLoad 在viewDidLoad中,outlets已经被设置;但是几何位置(bounds)并没有被设置 viewDidLoa…

h264 I帧的判断

From:http://blog.csdn.net/dxpqxb/article/details/13289205 H264数据的NALU 头的格式如图2 所示: F:forbidden_zero_bit.1 位,如果有语法冲突,则为 1。当网络识别此单元存在比特错误时,可将其设为 1,以便…

单硬盘上mac + win7双系统,GUID-GPT分区

首先,当然要介绍下我的环境了。 一、环境介绍 1. 主板是支持UEFI启动的,但是我感觉自己没用到。 2. 我有两个硬盘: hd0: 准备安装mac和win7_x64 hd1: GUID格式,GPT分区,已装有mac10.9.3环境,还有个FAT32的分区&a…

将clover安装到硬盘EFI分区, 解决root device uuid is ...问题

其实说白了,很简单,照着配置图来,一招搞定,但是当你不知道这些配置的时候,将可能耗费你好几天的时间,而且还不一定得到最优解。 附“Clover v2k r2703.pkg"下载地址: http://download.csdn.net/deta…