热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:python编程系列tcp服务端的简单实现

篇首语:本文由编程笔记#小编为大家整理,主要介绍了python编程系列---tcp服务端的简单实现相关的知识,希望对你有一定的参考价值。流

篇首语:本文由编程笔记#小编为大家整理,主要介绍了python编程系列---tcp服务端的简单实现相关的知识,希望对你有一定的参考价值。




流程如下:

"""tcp服务端创建流程
1. 创建服务端的tcp socket : server_socket 用于监听客户端的请求
2. 绑定端口
3. server_socket开启监听,由主动连接模式变为被动接受模式
4. 等待接收客户端的请求, 一有连接,则立即响应,且创建一个与客户端对接的socket,用该socket与客户端通信
5. 使用新创建的socket与客户端通信
6. 关闭新创建的socket, 该socket关闭,则与当前客户端结束通信
7. server_socket关闭,则不再接收新的客户端请求
"""

代码如下:


1 from socket import *
2
3
4 def main():
5 # 1.创建tcp_server_socket 套接字对象,用于监听客户端的请求
6 tcp_server_socket = socket(AF_INET,SOCK_STREAM)
7
8 # 复用同一个端口而不会提示端口被占用 ,解决当关闭的socket当处于time_out状态时, 也可立即使用端口
9 """
10 socket.setsockopt(level,option,value) :配置socket
11 level:等级,对哪个等级操作(ip,tcp,udp,socket等级)
12 option:设置哪个选项
13 socket.SO_REUSEADDR: 复用地址
14 value: True:表示复用,False,表示不复用
15 """
16 tcp_server_socket.setsockopt(SOL_SOCKET,SO_REUSEADDR,True)
17 # 提示:socket.setsockopt()方法要在 socket.bind()之前设置
18
19 # 2.绑定端口
20 tcp_server_socket.bind((\'\',9999))
21
22 # 3. tcp_server_socket开始监听,有主动连接模式变为被动连接模式
23 tcp_server_socket.listen(5)
24
25 # 4.等待客户端的请求,一有连接,就创建一个与客户端对接的new_socket新套接字,并且用这个新关键字与客户端联系
26 while True:
27 new_socket,client_addr = tcp_server_socket.accept()
28 print("新客户端连接:" ,client_addr)
29 new_socket.send("欢迎使用".encode())
30
31 # 5.使用新创建的new_socket来与客户端通信
32 # 此处的while True为同一客户端提供多次服务
33 while True:
34 recv_data = new_socket.recv(1024)
35
36 if recv_data:
37 print("新消息:%s,来自:%s"%(recv_data.decode(\'gbk\'),client_addr))
38
39 # 给客户端返回消息
40 new_socket.send("再见".encode())
41
42 else:
43 print(\'对方已经下线\')
44 break
45
46 # 6. 关闭新创建的socket, 该socket关闭,则与当前客户端结束通信
47 new_socket.close()
48
49 # 7.server_socket关闭,则不再接收新的客户端请求
50 tcp_server_socket.close()
51
52
53 if __name__ == \'__main__\':
54 main()


结果如下:

 


小结:

   最简单的 流程就是不要两个while True, 这样的服务器相当于10086一天只服务一个人后就下班

  1.加第一个while True 实现了一天可以服务很多人,但是一次只能服务一个人,而且这个人只能说一句话后即退出服务,继续接收下个客户"""
  2.第二个while True 实现了客服可以说多句话,但是依旧不能一次性接入多个客户(需要用到多任务)

 

 

 

 

如果你和我有共同爱好,我们可以加个好友一起交流!

 

 

 

 



推荐阅读
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • 本文介绍了使用Python解析C语言结构体的方法,包括定义基本类型和结构体类型的字典,并提供了一个示例代码,展示了如何解析C语言结构体。 ... [详细]
  • 本文介绍了在Python中使用zlib模块进行字符串的压缩与解压缩的方法,并探讨了其在内存优化方面的应用。通过压缩存储URL等长字符串,可以大大降低内存消耗,虽然处理时间会增加,但是整体效果显著。同时,给出了参考链接,供进一步学习和应用。 ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • ubuntu用sqoop将数据从hive导入mysql时,命令: ... [详细]
  • Android工程师面试准备及设计模式使用场景
    本文介绍了Android工程师面试准备的经验,包括面试流程和重点准备内容。同时,还介绍了建造者模式的使用场景,以及在Android开发中的具体应用。 ... [详细]
author-avatar
勇于明天2015
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有