前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >九、python学习笔记-网络编程-socketserver

九、python学习笔记-网络编程-socketserver

原创
作者头像
堕落飞鸟
发布2022-01-15 08:36:02
4170
发布2022-01-15 08:36:02
举报
文章被收录于专栏:飞鸟的专栏
代码语言:javascript
复制
# socketserver
"""
1、类式调用,实现socket功能
2、server端:服务端,监听指定端口,提供服务
3、client端:客户端,连接服务端,获取服务
"""

服务端

代码语言:javascript
复制
# 引入模块
import socketserver

# 通过类式调用实现基于socket通信
"""
1、建立Mysocket类,父类是socketserver.BaseRequestHandler
2、重写父类方法handle
3、调用Mysocket实际上就是执行handle方法
4、serve_forever()会在会话结束后重进进入阻塞状态,等待下次连接
"""


class Mysocket(socketserver.BaseRequestHandler):

    # 重写父类方法handle
    def handle(self):
        # 获取通道信息
        conn = self.request
        # 获客户端信息
        client_address = self.client_address
        # 打印通道信息
        print(conn)
        # 打印客户端信息
        print(client_address)
        # 接收打印消息
        info = str(conn.recv(1024), encoding='utf8')
        print(info)
        # 发送消息
        conn.sendall(bytes('hello too', encoding='utf8'))
        # 关闭连接
        conn.close()


if __name__ == '__main__':
    # 实例化socket对象
    server = socketserver.ThreadingTCPServer(('127.0.0.1', 8088), Mysocket)
    # 初始化socket连接,进入等待状态
    # serve_forever()会在会话结束后重进进入阻塞状态,等待下次连接
    server.serve_forever()

客户端

代码语言:javascript
复制
# 引入模块
import socket

# 初始化(实例化)socket对象sk
sk = socket.socket()

# 定义服务器端IP端口,元组格式
address = ('127.0.0.1', 8088)

# 连接服务器
sk.connect(address)

# 信息收发
"""
1、服务端和客户端谁先发信息都可以
2、必须是一发一收,两端不能同时发消息或收消息
"""

# 发送消息
"""
1、发送信息必须是bytes类型
2、send:发送TCP数据,将string中的数据发送到连接的套接字。返回值是要发送的字节数量,该数量可能小于string的字节大小(就是有可能发送不完整)。
3、sendall:完整发送TCP数据,完整发送TCP数据。将string中的数据发送到连接的套接字,但在返回之前会尝试发送所有数据。成功返回None,失败则抛出异常。
4、客户端发送信息使用socket对象sk,服务器端使用通道conn
"""
sk.sendall(bytes('hello', encoding='utf8'))

# 接收信息
"""
1、接收可以指定一次最大接收多少字节
2、接收的信息为bytes类型
3、等待接收时,进入阻塞状态,直到信息发送过来
4、一次接收信息有大小限制,也就是说有可能一次无法全部接收,需要分多次
5、客户端接收信息使用socket对象sk,服务器端使用通道conn
"""
info = str(sk.recv(1024), encoding='utf8')
print(info)

# 关闭连接
# 客户端关闭使用socket对象sk,服务器端使用通道conn
sk.close()

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档