網路tcp步驟及應用

2021-09-19 20:41:10 字數 1841 閱讀 2533

tcp協議,傳輸控制協議(英語:transmission control protocol,縮寫為 tcp)是一種面向連線的、可靠的、基於位元組流的傳輸層通訊協議。tcp通訊需要經過建立連線、資料傳送、終止連線三個步驟。類似於日常生活中打**的場景,需要建立鏈結,確認傳送結果,安全傳輸。

tcp嚴格區分客戶端和服務端,服務端一般都需要繫結埠,否則客戶端找不到該伺服器,客戶端一般不繫結埠,如果客戶端繫結埠就會出現埠衝突導致無法多開的問題。

面向連線(確認有建立三方交握,連線已建立才作傳輸。);有序資料傳輸;重發丟失的資料報;捨棄重複的資料報;差錯的資料傳輸;阻塞/流量控制。

tcp客戶端:

# 建立套接字

tcp_client_socket = socket.socket(socket.sock_af_inet, socket.sock_stream)

# 鏈結伺服器

tcp_client_socket.connect((『server_ip』, server_port))

# 向伺服器傳送資料

tcp_client_socket.send(『hello』.encode(『utf-8』))

# 接收伺服器回送資料

recv_data = tcp_cilent_socket.recv(1024)  # 返回的是位元組型別的資料

# 關閉套接字

tcp_client_socket.close()

tcp服務端:

# 建立套接字

tcp_sever_socket = socket.socket(socket.af_inet, socket.sock_stream)

# 繫結埠資訊,一定要做

tcp_server_socket.bind((「」, 7788))

# 把監聽由主動變為被動

tcp_server_socket.listen(128)

# 等待客戶端鏈結,在鏈結之前處於堵塞狀態,一直到客戶端鏈結才會解堵塞

# 返回乙個新的套接字專為客戶端服務、以及客戶端的ip、port

new_client_socket, client_addr = tcp_server_socket.accept()

# 等待客戶端傳送資料

recv_data = new_client_socket.recv(1024).decode(『utf-8』)

# 可以給客戶端回送資料

new_client_socket.send(『hello』.encode(『utf-8』))

# 為該客戶端服務完畢之後關閉套接字

new_client_socket.close()

# 關閉伺服器端套接字

tcp_server_socket.close()

listen(backlog)數值代表的含義?

監聽變主動為被動,backlog指定最多允許多少個客戶連線到伺服器。它的值至少為1。收到連線請求後,這些請求需要排隊,如果佇列滿,就拒絕請求

。請注意,最大限制是取決於作業系統,ubuntu上預設是128

tcp服務端recv解堵塞的兩種方式?

1、收到客戶端傳送的資料

2、客戶端關閉了套接字

可以通過判斷收到資料的長度來判斷客戶端是否下線,長度為0代表已下線。

網路udp通訊實現步驟及應用

udp 是user datagram protocol的簡稱,中文名是使用者資料報協議。一種無連線的傳輸層協議,提供面向事務的簡單不可靠資訊傳送服務。類似於日常生活中寫信的場景,不需要建立鏈結,不關心傳送結果。1 建立套接字 udp socket socket.socket socket.af in...

基於TCP 的網路程式設計步驟

基於tcp 伺服器端 1.建立乙個socket,用函式socket 2.繫結ip位址 埠等資訊到socket上,用函式bind 3.設定允許的最大連線數,用函式listen 4.等待來自客戶端的連線請求,用函式accept 5.收發資料,用函式send 和recv 或者read 和write 6.關...

網路程式設計之TCP應用

客戶端輸入三角形的三條邊長,判斷能否組成三角形,將三條邊傳送到伺服器端,計算三角形面積,返回給客戶端 海 式 a,b,c p a b c 2 area math.sqrt p p a p b p c 1.伺服器端 public class server dataoutputstream dos ne...