96-可重用的TCP服务器

95-socket基础:TCP服务器流程中,TCP服务器只能一个客户端连接,客户端也只能发送一条消息。本例允许客户端发送多条消息,输入end结束。客户端退出后,服务器程序不再退出,可以为下一个客户端提供服务:

import socket

host = ''
port = 12345
addr = (host, port)
s = socket.socket()
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind(addr)
s.listen(1)
while True:
    cli_sock, cli_addr = s.accept()
    print('Client connect from:', cli_addr)
    while True:
        data = cli_sock.recv(1024)
        if data.strip() == b'end':
            break
        print(data.decode('utf8'))  # bytes类型转为string类型
        data = input('> ') + '\r\n'  # 获得的是string类型
        cli_sock.send(data.encode('utf8'))  # 转成bytes类型发送
    cli_sock.close()
s.close()

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序员叨叨叨

听说你PHP配置Composer遇到了一些困境

最近在写PHP通信接口,涉及到数据库CRUD操作时,觉得PHP原生方法每次都要写SQL语句,效率不高,于是尝试使用Propel orm框架,此文记录PHP配置P...

903
来自专栏散尽浮华

Linux操作系统启动流程梳理

接触linux系统运维已经好几年了,常常被问到linux系统启动流程问题,刚好今天有空来梳理下这个过程: 一般来说,所有的操作系统的启动流程基本就是: ? 总的...

2878
来自专栏华仔的技术笔记

Github里面那个build的小图标是怎么玩的?

例如上面这个小图标,github上的工程build后,会显示编译后的状态,通过还是编译失败。

983
来自专栏Zchannel

最新突破百度云的下载神器 ProxyEe Down

2953
来自专栏电光石火

eclipse配置tomcat运行时访问路径不要项目名称

1:双击打开tomcat 2:选择Modules,选择你要修改的项目 ? 3:点击Edit,把path修改成空或者你自己想要的路径即可! ?

3136
来自专栏程序员同行者

mongodb主从配置及备份

2372
来自专栏禁心尽力

持久层框架之MyBatis

1、mybatis框架介绍:   MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software founda...

2705
来自专栏dalaoyang

linux下安装mysql

这是自己踩过的坑,记录一下,翻了一天博客,csdn等等,最后在网上看到了一个十分简单的安装过程。 安装 # yum -y install http://dev....

3527
来自专栏主机笔记

windows2012服务器搭建mongodb并设置远程访问

因为python脚本需要用到mongodb,而且需要本地查看数据库,所以就在腾讯云的windows服务器上部署了mongodb服务器,因为网上大部分教程是针对l...

5419
来自专栏Petrichor的专栏

ubuntu: scp指令 (远程拷贝)

用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。当你服务器硬盘变为只读 read...

2992

扫码关注云+社区

领取腾讯云代金券