python實現TCP程式設計

2021-08-24 17:44:49 字數 2662 閱讀 7021

通過python實現tcp程式設計

流程圖:

偽**:

伺服器:

ss = socket() #建立伺服器套接字

ss.bind() #把位址繫結到套接字上

ss.listen() #監聽連線(最大連線數)使套接字變為被動套接字

cs = ss.accept() #接受客戶端連線

comm_loop: #通訊迴圈

cs.recv()/cs.send() #對話(接收/傳送)

ss.close() #關閉伺服器

客戶端

aa = socket() #建立伺服器套接字

aa = connect()#連線伺服器

comm_loop: #通訊迴圈

aa.send() /aa.recv() #對話 (傳送/接收)

aa.close() #關閉客戶端套接字

from socket import *

"""tcp連線 (伺服器程式)

"""# 建立套接字

tcp_fw = socket(af_inet, sock_stream)

# tcp位址

tcp_ip = ''

# tcp埠

tcp_port = 8080

# 繫結位址和埠

tcp_fw.bind((tcp_ip, tcp_port))

# 設定監聽數 最大值為128

tcp_fw.listen(128)

# 接受客戶端連線

cleint, add = tcp_fw.accept()

"""connection, address = socket.accept()

呼叫accept方法時,socket會時入「waiting」狀態

客戶請求連線時,方法建立連線並返回伺服器

accept方法返回乙個含有兩個元素的 元組(connection,address)

第乙個元素connection是新的socket物件,伺服器必須通過它與客戶通訊

第二個元素 address是客戶的internet位址

"""while

true:

# 解碼從客戶端收到的資訊

print("waiting ...")

data = cleint.recv(1024).decode('utf-8')

ifnot data:

break

print("收到的資料為:", data)

# 編碼想要傳送的資訊

data_send = input("輸入想要傳送的資料:").encode('utf-8')

cleint.send(data_send)

tcp_fw.close()

from socket import *

"""tcp連線 (客戶端程式)

"""# 建立套接字

tcp_kh = socket(af_inet, sock_stream)

# tcp位址 (電腦本機位址)

tcp_ip = '192.168.1.113'

# tcp埠 (需要與伺服器的埠一致)

tcp_port = 8080

# 連線伺服器

tcp_kh.connect((tcp_ip, tcp_port))

while

true:

# 編碼想要傳送的資訊

data_send = input("輸入想要傳送的資料:").encode('utf-8')

tcp_kh.send(data_send)

# 解碼接收到的訊息

data_receive = tcp_kh.recv(1024)

ifnot data_receive:

break

print("收到的訊息:", data_receive.decode('utf-8'))

tcp_kh.close()

tcp注意點:

1.tcp伺服器一般情況下都需要繫結,否則客戶端找不到這個伺服器

2.tcp客戶端一般不繫結,因為是主動鏈結伺服器,所以只要確定好伺服器的ip、port等資訊就好,本地客戶端可以隨機

3.tcp伺服器中通過listen可以將socket建立出來的主動套接字變為被動的,這是做tcp伺服器時必須要做的

4.當客戶端需要鏈結伺服器時,就需要使用connect進行鏈結,udp是不需要鏈結的而是直接傳送,但是tcp必須先鏈結,只有鏈結成功才能通訊

5.當乙個tcp客戶端連線伺服器時,伺服器端會有1個新的套接字,這個套接字用來標記這個客戶端,單獨為這個客戶端服務

6.listen後的套接字是被動套接字,用來接收新的客戶端的鏈結請求的,而accept返回的新套接字是標記這個新客戶端的

7.關閉listen後的套接字意味著被動套接字關閉了,會導致新的客戶端不能夠鏈結伺服器,但是之前已經鏈結成功的客戶端正常通訊。

8.關閉accept返回的套接字意味著這個客戶端已經服務完畢

9.當客戶端的套接字呼叫close後,伺服器端會recv解堵塞,並且返回的長度為0,因此伺服器可以通過返回資料的長度來區別客戶端是否已經下線

TCP程式設計 python實現

tcp是乙個面向連線的協議。這意味著客戶和伺服器要先握手和建立乙個tcp連線,才能互相傳送資料。在建立這個連線時,客戶端通過套接字位址 ip和埠號 和伺服器的套接字位址 ip和埠號 關聯起來。然後,在之後的通訊中,伺服器和客戶端如果要傳送資料,直接把資料交給套接字就可以進行傳送。與之相對的時udp,...

通過Python3實現TCP程式設計

偽 ss socket 建立伺服器套接字 ss.bind 把位址繫結到套接字上 ss.listen 監聽連線 最大連線數 info loop 伺服器無限迴圈 cs ss.accept 接受客戶端連線 comm loop 通訊迴圈 cs.recv cs.send 對話 接收 傳送 cs.close 關...

python網路程式設計 TCP

一 網路通訊模式 對於網路通訊,現在遵循的是tcp ip協議組。而現在設計的通訊模式中,主要使用的是客戶端 伺服器程式設計,所謂的客戶端就是我們使用者所用的軟體,而服務端則是程式開發人員根據客戶端的需要設計的服務模式,為了是滿足客戶端的要求,實現和客戶端進行正常通訊。二 套接字 通訊的端點 對於tc...