TCP服务器端开发(面向对象;程序入口与端口复用)

''
TCP服务器端开发七步走 => ① 创建套接字对象 ② 绑定IP和端口 ③ 设置监听 ④ 接收客户端连接请求 ⑤ 接收消息
⑥ 发送消息 ⑦ 关闭套接字对象
'''
import socket

class WebServer(object):
    # 3、定义一个__init__()魔术方法
    def __init__(self):
        self.tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        # 设置端口复用(让服务器端占用的端口在执行结束可以立即释放,不影响后续程序的使用)
        self.tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
        self.tcp_server_socket.bind(('', 9000))  # 注意:参数必须是一个元组
        self.tcp_server_socket.listen(128)

    # 5、定义一个handle_request()方法,用于接收消息与发送消息
    def handle_request(self, new_socket, ip_port):
        # 接收某个客户端发送过来的消息
        content = new_socket.recv(1024).decode('gbk')  # 1024代表什么意思 => 1024字节 => 1kb = 实际工作中,一条数据大小在1~1.5k之间
        print(f'{ip_port}客户端发送消息:{content}')
        # 返回数据给客户端
        new_socket.send('信息已收到,over!'.encode('gbk'))
        # 关闭套接字对象
        # new_socket.close()

    # 4、定义一个start()方法
    def start(self):
        while True:
            new_socket, ip_port = self.tcp_server_socket.accept()
            # 调用自身的handle_request()方法,用于接收消息与发送消息
            self.handle_request(new_socket, ip_port)


# 定义一个程序的执行入口
if __name__ == '__main__':
    # 1、实例化对象
    ws = WebServer()
    # 2、调用对象中的相关方法 => 启动TCP服务
    ws.start()

注意:
端口复用的原因:使端口在使用结束后立即释放

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值