Python6:Socket编程初步学习笔记

本文详细介绍了Socket协议的基础知识,包括TCP/IP、SOCK_STREAM和AF_INET的选择,展示了如何在Python中创建和使用客户端和服务端socket,以及网络连接、数据发送和接收的过程。还介绍了使用TDD方法进行socket编程和内置socketserver的使用,如聊天室示例。
摘要由CSDN通过智能技术生成

Socket协议概要

创建socket的时候,需要一些选项来说明本次使用协议具体是什么,常用的两个:
在这里插入图片描述
由此产生的不同组合:
在这里插入图片描述
但目前TCP(IPV4)是主流,SOCK_STREAM+AF_INET

创建和使用Socket

socket模块中有socket类: socket.socket

  • 接收数据的方法
  • 发送数据的方法
  • 监听端口的方法

socket函数:

  • 创建客户端
  • 创建服务端
  • 创建客户端+服务端(已连接)
  • ……
相关函数:
  • 基本函数
    在这里插入图片描述

  • 便捷函数

    • 创建服务端socket
      1 创建socket
      2 绑定地址(ip+port)
      3 监听地址
      在这里插入图片描述

怎么判断判断是否连接成功,我们可以在连接之后打断点,并在命令行查看是否监听,用netstat -ano | findstr 端口号
在这里插入图片描述

    • 创建客户端socket
      1 创建socket
      2 绑定地址(ip+socket)
      3 向指定的服务端发起链接
      在这里插入图片描述

在这里插入图片描述

    • 创建已连接的socket
      1 创建两个socket,其中一个座位server监听端口,另一个座位client连接端口
      2 连接成功后,把两个socket返回
      在这里插入图片描述
      查看pid 得到通信状态:
      在这里插入图片描述
      只有两个连接,是没有监听状态的,所以不会有其他链接进来,只能有这两个。

Socket对象

socket提供了一系列方法完成网络连接、数据通信,常用的有:

  • 网络连接

    • 服务端
      1 bind绑定地址(ip+port
      2 listen监听端口,允许其他socket发起连接
      3 accept接收连接,生成新的socket,完成数据收发
      4 cloese 关闭连接
    • 客户端
      1 bind绑定地址(ip+port
      2 connect连接指定地址
      3 cloese 关闭
  • 数据通信(IO)

    • sendall 发送数据
    • recv 接收数据

配置日志

在这里插入图片描述

创建服务端代码:
在这里插入图片描述
创建客户端代码:
在这里插入图片描述

通信:传递二进制数据流
server.accept()的返回值是一个新的socket连接和连接的客户端地址,
server只做一个事情,就是用来监听并创建新的连接
发送信息由客户端发送,conn用来接收并发送返回信息
在这里插入图片描述

在这里插入图片描述

使用便捷函数完成上述功能:
创建服务端监听python3.8+:
在这里插入图片描述
创建客户端连接:
在这里插入图片描述
通信部分代码不变

使用TTD方法实现socket编程

测试驱动开发TDD:
1 编写测试用例
2 执行测试用例(测试失败-红
3 编写业务代码
4 执行测试用例(测试成功-绿
5 重构代码
6 执行测试用例

在这里插入图片描述

内置的socketserver

socketserver预制了常见了socketserver:

  • TCPServer
  • ThreadingTCPServer
  • ForkingTCPServer
    1能够处理客户端中断的异常,不会导致server退出
    2提供了并发的支持
    3 将网络连接、数据处理分开

ThreadingTCPServer使用

socket聊天室:多人同时在线每个人都可以发言,发言内容每个人都能收到
协议:
header:固定长度,申明body长度
body:不固定长度
结束标记:以某个字符串作为结束标记(“\n”)
使用TCP进行传输
数据格式:name msg time ,使用json字符串{“name”:“张三”,“msg”:“你好”,“time”:“2024-2-24”}

编写客户端
  1. 1 建立socket, 断开socket

  2. 2 发送消息能力:
    2.1 确定要发送的内容
    2.2 组装固定格式的字典
    2.3 将字段转字符串
    2.4 字符串+\n
    2.5 字符串转字节流
    2.6 借助socket发送字节流

  3. 3 接收消息能力
    3.1 从socket读取字节流
    3.2 字节流转字符串
    3.3 去掉结束标记
    3.4 字符串转字典
    3.5 返回字典

发送:
在这里插入图片描述
接收:
在这里插入图片描述
socket链接的建立和断开:
在这里插入图片描述

编写相关测试用例

在这里插入图片描述

夹具:启动和关闭服务器
在这里插入图片描述

举例:可回复消息用例
在这里插入图片描述
其余用例可 以上述用例为基础进行拓展

todotodo:
在这里插入图片描述

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于Python Socket服务器,以下是一些基本的学习笔记: 1. 创建Socket服务器 使用Python中的`socket`模块创建Socket服务器,可以使用`socket()`函数来创建一个Socket对象,如下所示: ```python import socket # 创建一个Socket对象 server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) ``` 其中,第一个参数`AF_INET`表示使用IPv4地址族,第二个参数`SOCK_STREAM`表示使用TCP协议,如果使用UDP协议,则应该使用`SOCK_DGRAM`。 2. 绑定Socket服务器 在创建Socket对象之后,需要使用`bind()`方法将Socket对象和一个IP地址及端口号绑定在一起,如下所示: ```python # 绑定IP地址和端口号 server_socket.bind(('127.0.0.1', 8888)) ``` 其中,`bind()`方法的参数是一个元组,第一个元素是IP地址,第二个元素是端口号。 3. 监听Socket服务器 在绑定IP地址和端口号之后,需要使用`listen()`方法开始监听Socket服务器,如下所示: ```python # 开始监听 server_socket.listen(5) ``` 其中,`listen()`方法的参数表示最大连接数,即同时可以连接的客户端数量。 4. 接受客户端连接 当有客户端连接Socket服务器时,需要使用`accept()`方法来接受客户端连接,如下所示: ```python # 接受客户端连接 client_socket, client_address = server_socket.accept() ``` 其中,`accept()`方法返回一个元组,第一个元素是客户端的Socket对象,第二个元素是客户端的IP地址和端口号。 5. 接收和发送数据 客户端连接Socket服务器之后,就可以进行数据的接收和发送了,使用`recv()`方法接收客户端发送的数据,使用`send()`方法向客户端发送数据,如下所示: ```python # 接收客户端数据 data = client_socket.recv(1024) # 发送服务器数据 client_socket.send(b'Hello, client!') ``` 其中,`recv()`方法的参数表示接收数据的最大字节数,`send()`方法的参数是要发送的数据,需要将其转换为字节串。 6. 关闭Socket服务器 当与客户端的通信完成后,需要使用`close()`方法关闭Socket服务器,如下所示: ```python # 关闭Socket服务器 server_socket.close() ``` 以上是关于Python Socket服务器的一些基本学习笔记,希望对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值