- 創(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()
- 創(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()
- 執(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ā)布平臺,僅提供信息存儲服務。