Python的TCP編程
阿新 • • 發佈:2019-02-15
str 發送數據 pre sta tin http tcp threading 服務器
目錄
- 前言
- server.py
- client.py
- 測試
前言
- 操作系統win10
- 時間2019年02月
- Python版本: Python 3.5.2
- 參考網址1--廖雪峰PythonTCP編程
server.py
# -*- coding: utf-8 -*- import socket import threading import time # 每個連接都必須創建新線程(或進程)來處理,否則, # 單線程在處理連接的過程中,無法接受其他客戶端的連接 def tcplink(sock, addr): print(‘Accept new connection from %s:%s...‘ % addr) sock.send((‘Welcome!‘).encode(‘utf-8‘)) while True: data = sock.recv(1024) time.sleep(1) if not data or data.decode(‘utf-8‘) == ‘exit‘: break sock.send((‘Hello, client user %s.‘ % data.decode(‘utf-8‘)).encode(‘utf-8‘)) sock.close() print(‘Connection from %s:%s closed.‘ % addr) # 創建一個socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 監聽端口 s.bind((‘127.0.0.1‘, 8080)) # 配置等待連接的最大數量 s.listen(5) print(‘Waiting for connection...‘) while True: # 接受一個新連接(等待並返回一個客戶端的連接) sock, addr = s.accept() # 創建新線程來處理TCP連接 t = threading.Thread(target=tcplink, args=(sock, addr)) t.start()
client.py
# -*- coding: utf-8 -*- import socket import threading import time s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 建立連接 s.connect((‘127.0.0.1‘, 8080)) # 接收歡迎消息 print(s.recv(1024).decode(‘utf-8‘)) # 發送數據 for data in [(‘aaa‘).encode(‘utf-8‘), (‘bbb‘).encode(‘utf-8‘)]: s.send(data) print(s.recv(1024).decode(‘utf-8‘)) s.send((‘exit‘).encode(‘utf-8‘)) s.close()
測試
啟動服務端
python server.py
啟動客戶端
python client.py
註意:客戶端程序運行完畢就退出了,而服務器程序會永遠運行下去,必須按Ctrl+C退出程序
Python的TCP編程