网络编程之socketserver初识

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络编程之socketserver初识相关的知识,希望对你有一定的参考价值。

网络编程之socketserver初识
Server
技术分享图片
#!/usr/bin/env python
# @Author   : "Wjl"
# @Date     : 2017/12/22
# @Time     : 11:07
# @SoftWare : PyCharm
# @File     : Server端并发聊天_Server.py

import socketserver

"""
socketserver模块是python为我们写好的一个封装了网络操作相关的模块
比我们自己手写socket方便
"""

class MyServer(socketserver.BaseRequestHandler):  # 必须继承socketserver.BaseRequestHandler

    def handle(self):  # 必须重写父类的handle方法,我们的逻辑就写在handle方法中
        print("服务端启动...")
        while True:
            conn = self.request  # self.request 就等于 TcpSocket.accept() 返回的socket对象
            print(self.client_address)  # self.client_address 就等于 TcpSocket.accept 返回的addr元组
            while True:
                # 将接收到的数据原路返回
                client_data = conn.recv(1024)
                print(str(client_data, "utf8"))
                print("waiting...")
                conn.sendall(client_data)
            conn.close()

if __name__ == __main__:
    server = socketserver.ThreadingTCPServer((127.0.0.1, 8888), MyServer)  # 要实现并发就必须调用ThreadingTCPServer
    server.serve_forever()  # 启动
View Code

 

Client
技术分享图片
#!/usr/bin/env python
# @Author   : "Wjl"
# @Date     : 2017/12/22
# @Time     : 11:07
# @SoftWare : PyCharm
# @File     : Server端并发聊天_Client.py

import socket

TcpSocket = socket.socket()

TcpSocket.connect((127.0.0.1, 8888))

while True:
    user_input = input(>>> )
    if user_input == q:
        break

    TcpSocket.send(user_input.encode(utf-8))
    data = TcpSocket.recv(1024)
    print(data.decode(utf-8))

TcpSocket.close()
View Code

 

以上是关于网络编程之socketserver初识的主要内容,如果未能解决你的问题,请参考以下文章

python-41-初识hmac与socketserver模块

并发编程之socketserver模块

python之线程进程和协程

106 网络编程实战之基于socketserver实现多用户FTP服务器

《Python》网络编程之验证客户端链接的合法性socketserver模块

初识恶意代码之------网络蠕虫