前言:本文是学习网易微专业的《python全栈工程师》 中的《服务器运维开发工程师》专题的课程笔记,欢迎学习交流。同时感谢老师们的精彩传授!
一、课程目标
- 什么是
socket
- 服务端开发
- 客户端开发
二、详情解读
2.1.socket
编程
在实际的TCP/IP
应用程序甘托克,并不需要去实现细节部分,通常会由系统提供socket
接口,这个接口又被称为套接字,基于这个接口就可以轻松的开发网络通讯程序。
python
标准库提供的socket
模块,可以实现服务端与客户端的编程。
2.2.服务端开发
1.服务器端一直运行,直至关闭
2.服务器端口是固定的
3.服务器拥有固定的ip
或者主机名
4.服务器运行后,会等待客户端连接
5.一旦连接成功,就可以相互发送消息
python
标准库中的socket
:
1.s = socket(套接字类别,SOCK_STREAM)
套接字类别:AF_INET
表示IP
寻址,AF_UNIX
表示文件类型套接字。
返回一个socket
对象实例
2.s.bind(("127.0.0.1", 8000))
参数是元组类型,( ip
地址,端口号)
3.s.listen(num)
启动监听,如果提供了num
,表示允许的最多连接数,超过的将被拒绝
4.socket, address = s.accept()
等待连接,如果有连接,返回由客户端socket
对象与address
信息组成的元组。
服务端的实现如下:
先下载安装抓包工具:wireshark
。下载链接:https://www.wireshark.org/download.html
接着,服务端实现代码如下:
from socket import socket, AF_INET, SOCK_STREAM
# AF_INET - IPV4 协议
# SOCK_STREAM - 套接字类型为面向连接的可靠字节流
# 创建socket对象
s_server = socket(AF_INET, SOCK_STREAM)
# 绑定IP与端口号
s_server.bind(("127.0.0.1"