socketserver模塊

  1. 創(chuàng)建 SocketServer TCP 服務器
$ tsTservSS.py
  1 #!/usr/bin/python3
  2 
  3 from socketserver import (TCPServer as TCP, StreamRequestHandler as SRH)
  4 from time import ctime
  5 
  6 HOST = ''
  7 PORT = 6666
  8 ADDR = (HOST, PORT)
  9 
 10 # 定義請求頭類
 11 class MyRequestHandler(SRH):
 12 
 13     # 重寫handle方法
 14     def handle(self):
 15         # 打印鏈接地址
 16         print('[+] ...connected from: %s: %d' % (self.client_address[0], self.client_address[1]))
 17         # 發(fā)送消息,self.rfile.readline(),讀取數(shù)據(jù)包文件的一行發(fā)送回去,
 18         # self.wfile.write(),寫入數(shù)據(jù)包里并發(fā)送回去
 19         self.wfile.write(b'[%s] %s' % (bytes(ctime(), 'utf-8'), self.rfile.readline()))
 20 
 21 
 22 tcpServ = TCP(ADDR, MyRequestHandler)
 23 print('[*] waiting for connection...')
 24 tcpServ.serve_forever()

  1. 創(chuàng)建 SocketServer TCP 客戶端
$ tsTclntSS.py
  1 #!/usr/bin/python3
  2 
  3 from socket import *
  4 
  5 HOST = 'localhost'
  6 PORT = 6666
  7 BUFSIZ = 1024
  8 ADDR = (HOST, PORT)
  9 
 10 while True:
 11     tcpCliSock = socket(AF_INET, SOCK_STREAM)
 12     tcpCliSock.connect(ADDR)
 13     data = input(">>>")
 14     if data == 'exit':
 15        break
 16     # 這里需要加\r\n終止符
 17     tcpCliSock.send(b'%s\r\n' % bytes(data, 'utf-8'))
 18     data = tcpCliSock.recv(BUFSIZ)
 19     if not data:
 20         break
 21     print(data.decode('utf-8').strip())
 22 
 23 tcpCliSock.close()
  1. 執(zhí)行 TCP 服務器和客戶端
# 終端1
$ ./tsTservSS.py 
[*] waiting for connection...
[+] ...connected from: 127.0.0.1: 33166    #連接一次
[+] ...connected from: 127.0.0.1: 33168    #發(fā)送消息一次
[+] ...connected from: 127.0.0.1: 33170    #發(fā)送消息一次

# 終端2
$ ./tsTclntSS.py 
>>>hello
[Mon Nov 27 14:02:51 2017] hello
>>>good bey!
[Mon Nov 27 14:02:53 2017] good bey!
>>>exit
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容