1. 程式人生 > >網絡編程之socketserver初識

網絡編程之socketserver初識

div client nec -m order put __name__ arm 對象

網絡編程之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初識