码迷,mamicode.com
首页 > 其他好文 > 详细

网络编程之socketserver初识

时间:2018-02-23 12:03:50      阅读:103      评论:0      收藏:0      [点我收藏+]

标签:pyc   int   聊天   line   class   def   sock   gpo   read   

网络编程之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初识

标签:pyc   int   聊天   line   class   def   sock   gpo   read   

原文地址:https://www.cnblogs.com/xiaofengchu/p/8461191.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!