python TCP程式設計再試牛刀

2021-07-16 03:40:38 字數 2120 閱讀 9433

該示例演示的是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 再從網上摘抄如下筆記...