Python socket 基础 Server - Foundations of Python Socket

 通过 python socket 模块建立一个提供 TCP 链接服务的 server 可分为 4 个步骤,
1, 建立 socket 对象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
2, 设置 socket 选项(可选)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
在一个服务器进程终止后,操作系统通常会保留几分端口,这样在超时之前这个
端口先属于被占用状态,不可被其他程序使用. 若设置 SO_REUSEADDR 为 true,
则操作系统会在 socket 关闭后立刻释放它的端口.
3, 绑定到一个端口, 或一个网卡
s.bind((host, port))
host 参数可以为空 '', 意思是绑定到所有的地址.
一个 use case 是, 一台 PC 有多个网卡, 一张网卡链接到公共的 Internet 上,
另一张网卡链接在内部网路上。如果希望服务只对内部网路可见, 可以同过 bind()
方法将服务绑定到内部网路的 IP 地址上. 这样对于通过公共的 Internet 访问的
用来所来服务是不可见的。
4, 监听链接请求
s.listen(5)
该方法通知操作系统准备接受链接请求. 方法接收一个 int 类型参数, 含义是指明
服务器处理链接的时候,允许有多少个等待的链接在队列中 queue. 响应连接请求,
while 1:
clientsocket, clientaddr = s.accept()
print("%s is connecting" % clientsocket.getpeername())
accept()方法会 阻塞 程序, 当一个客户端连接后才返回 异常处理,
任何没有被捕获到异常都会到时程序终止, 然而这种情况对于服务端而言是非常不好的.
因为异常将到时整个服务器关闭,并停止响应请求,从而不得不重启服务端以回复服务.
一个健壮的服务端程序,应该捕获任何错误和异常并对其做适当的处理,从而保证服务不会被终止.
import traceback
while 1:
try:
clientsocket, clientaddr = s.accept()
except KeyboardInterrupt as e: # Ctrl-C 可以终止程序
raise e
except:
traceback.print_exc() # 捕获所以其他异常,并打印
continue # 下一循环,而非终止程序
try:
print("%s is connecting" % clientsocket.getpeername())
except (KeyboardInterrupt,SystemExit): # Ctrl-C 和 sys.exit()
raise
except:
traceback.print_exc() # 打印其他异常 try:
clientsocket.close() # 进入第二个 try 代码块儿后,
# 无论是否有异产生 close() 方法都应该被调用.
except KeyboardInterrupt: # 第二,三个 try 代码块,可以合并成
# try ... finally 的结构保证 close()的调用.
raise
except:
traceback.print_exc()

Python socket 基础(Server) - Foundations of Python Socket的更多相关文章

  1. Python socket 基础(Client) - Foundations of Python Socket

    Python socket 基础- Foundations of Python Socket 建立socket - establish socket import socket s = socket. ...

  2. Python零基础学习系列之三--Python编辑器选择

    上一篇文章记录了怎么安装Python环境,同时也成功的在电脑上安装好了Python环境,可以正式开始自己的编程之旅了.但是现在又有头疼的事情,该用什么来写Python程序呢,该用什么来执行Python ...

  3. Python零基础学习系列之四--Python程序设计思想

    前面我们把Python环境安装成功,同时也选择了自己合适的IDE工具来开启自己的编程之旅. 那么今天来说说怎么编程,程序设计需要什么步骤,我们应该怎么做才能编写自己的程序. 1-1.程序设计方法: I ...

  4. 【python语法基础-经典练习题】python语法基础练习题01---商场打折

    # 1.一家商场在降价促销.如果购买金额50-100元(包含50元和100元)之间,会给10%的折扣(打九折),# 如果购买金额大于100元会给20%折扣.编写一程序,询问购买价格,再显示出折扣(%1 ...

  5. 大牛整理最全Python零基础入门学习资料

    大牛整理最全Python零基础入门学习资料 发布时间:『 2017-11-12 11:56 』     帖子类别:『人工智能』  阅读次数:3504 (本文『大牛整理最全Python零基础入门学习资料 ...

  6. php Socket基础

    ◆ Socket 基础PHP使用Berkley的socket库来创建它的连接.socket只不过是一个数据结构.你使用这个socket数据结构去开始一个客户端和服务器之间的会话.这个服务器是一直在监听 ...

  7. 【Python】-NO.96.Note.2.Python -【Python 基础】

    1.0.0 Summary Tittle:[Python]-NO.95.Note.1.Python -[Python 老男孩 基础]- Style:Python Series:Python Since ...

  8. Python入门基础学习 三

    Python入门基础学习 三 数据类型 Python区分整型和浮点型依靠的是小数点,有小数点就是浮点型. e记法:e就是10的意思,是一种科学的计数法,15000=1.5e4 布尔类型是一种特殊的整形 ...

  9. python数据分析基础

    ---恢复内容开始--- Python数据分析基础(1) //2019.07.09python数据分析基础总结1.python数据分析主要使用IDE是Pycharm和Anaconda,最为常用和方便的 ...

随机推荐

  1. C语言之函数用法总结

    C语言函数概述: 构成C语言程序的基本模块,模块化编程的最小单位. 函数调用的基本方式: 函数调用时的数据传递: 函数调用的过程: 函数原型与函数定义的区别: 函数封装: 1.外界对函数的影响仅限于入 ...

  2. 全流程开发 TP6.0实战高并发电商服务系统*完

    在TP6框架中我们可以学到TP整体知识,如下图一所示: 图一:TP6整体知识点 这些内容都会在实战课程中一一涵盖,并且在课程中我们会用到五层架构思想(如图二),和传统的MVC架构有所不一样,这样做可以 ...

  3. UGUI源码之EventSystem

    今天研究下UGUI的源码,先从EventSystem入手.EventSystem是用来处理点击.键盘输入以及触摸等事件的. 1.BaseInputModule EventSystem开头声明了两个变量 ...

  4. python条件(三元)运算符

    条件运算符  是 三元运算符 语法: 语句1  if   条件表达式  else  语句2 执行流程: 条件运算符在执行时,会先对条件表达式进行求值判断         如果判断结果为True,则执行 ...

  5. 由Kaggle竞赛wiki文章流量预测引发的pandas内存优化过程分享

    pandas内存优化分享 缘由 最近在做Kaggle上的wiki文章流量预测项目,这里由于个人电脑配置问题,我一直都是用的Kaggle的kernel,但是我们知道kernel的内存限制是16G,如下: ...

  6. Xcode10:library not found for -lstdc++.6.0.9 临时解决

    1.https://pan.baidu.com/s/1IkbZb6qaxgvghP1HEFQa6w?errno=0&errmsg=Auth%20Login%20Sucess&& ...

  7. MySql查看修改l时区

    # 查看时区 show variables like '%time_zone%'; # 设置全局 set global time_zone='+8:00';  # 设置当前会话 set time_zo ...

  8. 从0到1掌握某Json-TemplatesImpl链与ysoserial-jdk7u21的前因后果

    本文首发于先知社区: https://xz.aliyun.com/t/7096 前言 作为一名安全研究人员(java安全菜鸡),知道拿到exp怎么打还不够,还得进一步分析exp构造原理与漏洞原理才行. ...

  9. .net core 第三方工具包集合

    日志 Nlog 单点登录

  10. 「 从0到1学习微服务SpringCloud 」10 服务网关Zuul

    系列文章(更新ing): 「 从0到1学习微服务SpringCloud 」06 统一配置中心Spring Cloud Config 「 从0到1学习微服务SpringCloud 」07 RabbitM ...