通過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...