偽**:
ss = socket() #建立伺服器套接字
ss.bind() #把位址繫結到套接字上
ss.listen() #監聽連線(最大連線數)
info_loop: #伺服器無限迴圈
cs = ss.accept() #接受客戶端連線
comm_loop: #通訊迴圈
cs.recv()/cs.send() #對話(接收/傳送)
cs.close() #關閉客戶端套接字
ss.close() #關閉伺服器
所有的套接字都用socket.socket()函式來建立,伺服器需要「坐在某個埠上「等待請求」所以它們必須要「繫結」到乙個本地位址上,
由於tcp是乙個面向連線的通訊系統,在tcp伺服器開始工作之前,要先完成一些設定,tcp伺服器必須「監聽」連線,設定完成之後伺服器
就可以進入無限迴圈了。
乙個簡單的「單執行緒」伺服器會呼叫accept()函式等待連線的到來,預設情況下accept()函式是阻塞的,即程式在連線到來之前會處於掛起狀態,
套接字也支援非阻塞模式。
一旦接收到乙個連線,accept()函式就會返回乙個單獨的客戶端套接字用於後續的通訊。
簡單的tcp伺服器
**如下
#tcp客戶端**:!/usr/bin/env python3
#-*- coding:utf-8 -*-
from socket import *
from time import
ctime
host = ''
port = 12345buffsize = 2048addr =(host,port)
tctime =socket(af_inet,sock_stream)
tctime.bind(addr)
tctime.listen(3)
while
true:
print('
wait for connection ...')
tctimeclient,addr =tctime.accept()
print("
connection from :
",addr)
while
true:
data =tctimeclient.recv(buffsize).decode()
ifnot
data:
break
tctimeclient.send((
'[%s] %s
' %(ctime(),data)).encode())
tctimeclient.close()
tctimeclient.close()
#!/usr/bin/env python3
#-*- coding:utf-8 -*-
from socket import *host ='
localhost
'port = 12345buffsize=2048addr =(host,port)
tctimeclient =socket(af_inet,sock_stream)
tctimeclient.connect(addr)
while
true:
data = input("
>")
ifnot
data:
break
tctimeclient.send(data.encode())
data =tctimeclient.recv(buffsize).decode()
ifnot
data:
break
(data)
tctimeclient.close()
python3漢字編碼 Python3的編碼總結
python3編碼結論 python3的字串在記憶體中是用unicode 佔空間和頻寬 儲存的,所以不能直接用於儲存,傳輸。要通過其它編碼轉換成相對應的位元組碼 str encode byte byte decode str 常見的編碼 編碼是美國最先發明的,最先出來的是ascii編碼,最早計算機在...
如何通過Python3和ssl實現加密通訊功能
一 說明 1.python標準庫ssl可實現加密通訊 2.ssl庫底層使用openssl,做了面向對像化改造和簡化,但還是可以明顯看出openssl的痕跡 3.本文先給出python實現的socket通訊,在此基礎上再給出ssl通訊以便讀者更方便地看到socket和ssl在python程式設計中的區...
python3實現CryptoJS AES加密演算法
from crypto.cipher import aes from binascii import b2a hex,a2b hex import base64 class aescrypt def init self,key self.key key.encode utf8 self.mode a...