clientsocket = socket(socket.af_inet, socket.sock_dgram)
建立客戶套接字,第乙個引數指定位址簇,af_inet說明底層網路使用ipv4。第二個引數指示該套接字是乙個sock_dgram型別的,說明是udp套接字。
raw_input()
是python
的內建功能,執行這條命令的時候,使用者使用鍵盤輸入一行被放入乙個變數中。
clientsocket.sendto(message,
(servername, serverport)
)
sendto
為報文附上目的位址(servername, serverport)
並且向程序的套接字clientsocket
傳送結果分組
modifiedmessage, serveraddress = clientsocket.recvfrom(
2048
)
serveraddress
包括伺服器的ip位址和埠號,2048是快取長度
udp server
serversocket.bind(('',serverport))
將埠號和伺服器的套接字繫結在一起,顯式的分配埠號
tcp是乙個面向連線的協議,在傳送資料之前,tcp連線的一端與客戶套接字相聯絡,另一端與伺服器套接字相聯絡。一側向另一側傳送資料時,只需經過其套接字將資料丟給tcp連線,而udp必須附上目的地位址。
開啟伺服器程序
客戶程序向伺服器發起乙個tcp連線(客戶程式建立乙個tcp套接字)
客戶發起乙個三次握手並建立與伺服器的tcp連線(三次握手發生在運輸層),三次握手的時候伺服器程序會有兩個套接字
連線套接字connectionsocket
:用於對客戶進行連線,用於特定客戶,與每個客戶通訊而生成
客戶程序可以向其套接字傳送任意位元組,tcp保證伺服器程序能夠按照傳送的順序接收。
clientsocket = socket(af_inet, sock_stream)
第乙個引數仍然表示使用ipv4,第二個引數指示該套接字時sock_stream
型別,表明是乙個tcp套接字。
clientsocket.connect((servername, serverport))
發起客戶和伺服器之間的tcp連線。這行**執行完後,執行三次握手,並在客戶和伺服器之間建立起一條tcp連線。
clientsocket.send(sentence)
tcp serverserversocket.listen(1)
等待客戶,聆聽來自客戶的tcp連線請求。
connectionsocket, addr = serversocket.accept()
建立了乙個稱為connectionsocket
的新套接字,由特定客戶使用,客戶和伺服器完成了握手,並在客戶的clientsocket
和伺服器的serversocket
之間建立了乙個tcp連線,serversocket
需要一直保持開啟,connectionsocket
在使用完後可關閉。 Linux 傳輸層基於TCP協議的套接字程式設計例項
1.含義 同udp相同也是傳輸層的一種協議。transmission control protocol 傳輸控制協議 2.特點 面向連線 傳輸可靠 提供位元組流服務 面向連線 服務端必須與客戶端建立連線。傳輸可靠 一系列的機制 應答等 保證資料傳輸的可靠性。提供位元組流服務 傳送資料不會像udp那樣...
應用層學習筆記一 應用層協議原理
研究網路應用程式的核心是寫出能夠執行在不同的端系統和通過網路彼此通訊的程式。客戶 伺服器體系 客戶與伺服器程序 程序與計算機網路之間的介面 程序定址 標識接收程序需要兩種資訊,主機的位址以及定義在目的主機中的接收程序的識別符號。主機由ip位址標識。目的地埠號用於標識目的主機的接收程序。從四個方面對應...
應用層之 建立網路應用(套接字程式設計)初略版
我們已經看了許多的網路應用,例如web,dns,下面我們要來研究網路應用程式到底是怎麼建立的?網路應用體系結構主流的有兩種client server,p2p。通常是的是client server體系結構。我們現在就開始建立乙個client server的網路應用。既然是採用client server...