1.tcp客戶端
from socket import *
# 建立socket
tcp_client_socket = socket(af_inet, sock_stream)
# 目的資訊
server_ip = input("請輸入伺服器ip:")
server_port = int(input("請輸入伺服器port:"))
# 鏈結伺服器
tcp_client_socket.connect((server_ip, server_port))
# 提示使用者輸入資料
send_data = input("請輸入要傳送的資料:")
tcp_client_socket.send(send_data.encode("gbk"))
# 接收對方傳送過來的資料,最大接收1024個位元組
recvdata = tcp_client_socket.recv(1024)
print('接收到的資料為:', recvdata.decode('gbk'))
# 關閉套接字
tcp_client_socket.close()
2.tcp伺服器
流程如下:
1.socket建立乙個套接字
2.bind繫結ip和port
3.listen使套接字變為可以被動鏈結
4.accept等待客戶端的鏈結
5.recv/send接收傳送資料
**如下:
from socket import *
# 建立socket
tcp_server_socket = socket(af_inet, sock_stream)
# 本地資訊(不寫ip預設本機127.0.0.1)
address = ('127.0.0.1', 7788)
# 繫結
tcp_server_socket.bind(address)
# 使用socket建立的套接字預設的屬性是主動的,使用listen將其變為被動的,這樣就可以接收別人的鏈結了
#監聽tcp_server_socket.listen(128)
# 如果有新的客戶端來鏈結伺服器,那麼就產生乙個新的套接字專門為這個客戶端服務
# client_socket用來為這個客戶端服務
# tcp_server_socket就可以省下來專門等待其他新客戶端的鏈結
client_socket, clientaddr = tcp_server_socket.accept()
# 接收對方傳送過來的資料
recv_data = client_socket.recv(1024) # 接收1024個位元組
print('接收到的資料為:', recv_data.decode('gbk'))
# 傳送一些資料到客戶端
client_socket.send("thank you !".encode('gbk'))
# 關閉為這個客戶端服務的套接字,只要關閉了,就意味著為不能再為這個客戶端服務了,如果還需要服務,只能再次重新連線
client_socket.close()
3.tcp的3次握手
client(客戶端連線connect)-------->server(服務端監聽listen)--------->client(服務端告訴客戶端鏈結已建立)---------->server(客戶端告訴服務端鏈結已建立)
4.tcp的4次揮手client(客戶端告訴服務端要關閉鏈結close)
---->server(服務端告訴客戶端同意關閉鏈結close)
---->client(服務端告訴客戶端鏈結已關閉)
server---->client(服務端將最後的資料傳遞給客戶端)
---->server(設定超時等待,確保最後達到關閉狀態)
5.tcp長連線和短連線
tcp短連線
client 向 server 發起連線請求
server 接到請求,雙方建立連線
client 向 server 傳送訊息
server 回應 client
一次讀寫完成,此時雙方任何乙個都可以發起 close 操作
在步驟5中,一般都是 client 先發起 close 操作。當然也不排除有特殊的情況。
短連線一般只會在 client/server 間傳遞一次讀寫操作!
tcp長連線
client 向 server 發起連線
server 接到請求,雙方建立連線
client 向 server 傳送訊息
server 回應 client
一次讀寫完成,連線不關閉
後續讀寫操作…
長時間操作之後client發起關閉請求
TCP網路程式設計基礎
1 套接字結構 struct sockaddr 上述結構中協議族成員變數sa family的型別是sa family t,其實這個型別是unsigned short型別,因此成員變數sa family的長度為16位。typedef unsigned short sa family t 通用套接字結構...
java網路程式設計 TCP程式設計基礎 1
tcp網路程式設計是指利用socket類編寫通訊程式。分為客戶端與服務端 tcp採用 三次握手 進行執行 客戶端 socket socket new socket iinetaddress address,int prot 1 例項化socket套接字 2 通過socket物件呼叫輸出 輸入流並返回...
TCP網路程式設計
基於tcp 通訊模型 由上圖可以得出tcp通訊的步驟如下 服務端 1 建立乙個socket,用函式socket 2 繫結ip位址 埠等資訊到socket上,用函式bind 3 設定允許的最大連線數,用函式listen 4 等待來著客戶端的連線請求,用函式accept 5 收發資料,用函式send 和...