該示例演示的是c-s服務模型,server端接收來自客戶端的請求,然後只是很簡單地給客戶端返回「hello」 + 來自客戶端的原文。核心在於兩端socket的建立和連線以及資料的傳送和接收。
server端:server.py:
# -*- coding: utf-8 -*-
'''created on 2023年8月3日
@author: lv.lang
'''import socket
import time, threading
#建立乙個基於ipv4和tcp協議的socket
s = socket.socket(socket.af_inet, socket.sock_stream)
#監聽埠
s.bind(('127.0.0.1',9999)) #將socket繫結位址和埠
s.listen(5) #傳入引數指定等待連線的最大數量
print('waiting for connection...')
def tcplink(sock, addr):
print('accept new connection from %s:%s...' % addr)
sock.send(b'welcome!')
while true:
data = sock.recv(1024)
time.sleep(1)
if not data or data.decode('utf-8') == 'exit':
break
sock.send(('hello, %s!' % data.decode('utf-8')).encode('utf-8'))
sock.close()
s.close()
print('connection from %s:%s closed.' % addr)
#用乙個永久迴圈來接受來自客戶端的連線
while true:
#接受乙個連線
sock, addr = s.accept()
#建立新執行緒來處理tcp連線
t = threading.thread(target = tcplink, args = (sock, addr))
t.start()
(1)首先建立用於tcp連線的socket
(2)將socket和位址及埠繫結
(3)監聽埠
(4)用個死迴圈監聽埠進來的資料
(5)每接收到一次資料都建立乙個執行緒來處理
(6)對資料進行打包,返回給客戶端
(7)關閉tcp連線
客戶端client.py:
# -*- coding: utf-8 -*-
'''created on 2023年8月3日
@author: lv.lang
'''import socket
s = socket.socket(socket.af_inet, socket.sock_stream)
# 建立連線
s.connect(('127.0.0.1', 9999))
# 接收歡迎資訊
print(s.recv(1024).decode('utf-8'))
for data in [b'michael', b'tracy', b'sarah']:
# 傳送資料
s.send(data)
print(s.recv(1024).decode('utf-8'))
s.send(b'exit')
s.close()
(1)首先建立用於tcp連線的socket
(2)將socket和位址及埠繫結
(3)傳送資料
(4)接收資料,並將其列印
(5)關閉tcp連線
執行結果:
先執行server.py:
再執行client.py:
python TCP程式設計再試牛刀
該示例演示的是c s服務模型,server端接收來自客戶端的請求,然後只是很簡單地給客戶端返回 hello 來自客戶端的原文。核心在於兩端socket的建立和連線以及資料的傳送和接收。server端 server.py coding utf 8 created on 2016年8月3日 author...
python TCP程式設計小試牛刀
學習自廖雪峰的python教程,也是參照著他的教程敲的。這個例子是乙個tcp客戶端python程式設計的例子,1 首先建立乙個tcp的socket 2 然後呼叫socket的方法與伺服器進行連線 3 連線之後給伺服器傳送一條http請求 4 接收伺服器返回的http響應 包括包頭和html資料 5 ...
再試牛刀,web列印與列印預覽
測試師兄的執法系統時,看到幾行 輕鬆搞定頁面列印。好奇之下,自己模仿寫了幾行試驗下。為方便,用記事本寫純html 如下 this is a ready for printing page test this is a ready for printing page test 2 再從網上摘抄如下筆記...