TCP服务器端开发七步走(面向对象版)

TCP服务器端开发七步走(面向对象版)

1、描述

TCP服务器端开发七步走:① 创建服务器端套接字对象 ② 绑定IP和端口 ③ 开始监听 ④ 接收客户端连接请求 ⑤ 接收数据 ⑥ 发送数据 ⑦ 关闭套接字对象

2、代码

(1)代码分析:

通过面向对象开发 => 分析有哪些对象 => 创建类 => 属性和方法
服务器端对象 => 服务器端类

import socket
# 第一步:创建WebServer类(准备连接客户端之前需要进行的操作)
class WebServer(object):
    # 第四步:定义魔术方法__init__()
    def __init__(self):
        # ①创建服务器端套接字对象(应将其当做属性来处理,所以用self.属性来进行应用。)
        self.tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        # ②绑定IP和端口号
        self.tcp_server_socket.bind(('', 8000))  # 注意其参数是元祖类型
        # ③设置监听
        self.tcp_server_socket.listen(128)

    # 第五步: 定义一个start()方法 => 接收客户器端连接
    def Start(self):
        # ④接收客户器端连接(允许多个客户端同时连接)
        while True:
            new_socket, ip_port = self.tcp_server_socket.accept()  # accept()方法相当于input其具有暂停的功能
            # ⑤接收客户端发送过来的信息
            content = new_socket.recv(1024).decode('gbk')
            print((f'{ip_port}客户端发送过来的数据:{content}'))
            # ⑥返回数据给客户端(相应数据)
            data = input("请输入您要回复的内容:")
            new_socket.send(data.encode('gbk'))
            new_socket.close()


# 第二步:实例化对象,调用__init__()初始化方法
ws = WebServer()
# 第三步:启动服务,接收客户端连接
ws.Start()

(2)结果演示:

服务器端:
在这里插入图片描述
客户端:
在这里插入图片描述

(3)遗留问题分析:

整个程序其实目前位置只能接收一个客户端,接收其他客户端,必须等待上一个连接结束,才可以继续连接发送接收数据,因为我们目前编写的程序都是单进程!一个Python只能处理一个连接请求!
如何期望服务器端,可以同时处理多个客户端请求,怎么办呢?答:使用多任务编程
第七步要去掉:tcp_server_socket.close()
因为:服务器端的套接字主要是用来接收客户端连接的,将其关掉客户端就连接不上了
不然相当于下图的线断开了
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值