網路通訊udp與tcp的區別

2021-09-23 10:37:36 字數 2713 閱讀 3555

1.建立套接字

2.繫結ip和埠號

3.使用套接字收/發資料(記得解碼(decode)和編碼(encode)哦)

4.關閉套接字

#coding=utf-8

from socket import *

# 1. 建立套接字

udp_socket = socket(af_inet, sock_dgram)

# 2. 繫結本地的相關資訊,如果乙個網路程式不繫結,則系統會隨機分配

local_addr = ('', 7788) # ip位址和埠號,ip一般不用寫,表示本機的任何乙個ip

udp_socket.bind(local_addr)

# 3. 等待接收對方傳送的資料

recv_data = udp_socket.recvfrom(1024) # 1024表示本次接收的最大位元組數

# 4. 顯示接收到的資料

print(recv_data[0].decode('gbk'))

# 5. 關閉套接字

udp_socket.close()

tcp協議,傳輸控制協議(英語:transmission control protocol,縮寫為 tcp)是一種面向連線的、可靠的、基於位元組流的傳輸層通訊協議,由ietf的rfc 793定義。

1.socket建立乙個套接字

2.bind繫結ip和port

3.listen使套接字變為可以被動鏈結

4.accept等待客戶端的鏈結

5.recv/send接收傳送資料(記得解碼(decode)和編碼(encode)哦)

6.close關閉套接字

from socket import *

# 建立socket

tcp_server_socket = socket(af_inet, sock_stream)

# 使同一埠可以重複使用

self.server_socket.setsockopt(socket.sol_socket, socket.so_reuseaddr, 1)

# 本地資訊

address = ('', 7788)

# 繫結

tcp_server_socket.bind(address)

# 使用socket建立的套接字預設的屬性是主動的,使用listen將其變為被動的,這樣就可以接收別人的鏈結了

tcp_server_socket.listen(128)

#為多個客戶端服務

while true:

# 如果有新的客戶端來鏈結伺服器,那麼就產生乙個新的套接字專門為這個客戶端服務

# 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()

# 關閉服務端套接字

tcp_server_socket.close

1.建立tcp套接字

2.connect鏈結伺服器(傳入ip和port)

3.recv/send收發資料(記得解碼(decode)和編碼(encode)哦)

4.關閉套接字

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.clos

tcp與udp的不同點

面向連線(確認有建立三方交握,連線已建立才作傳輸。)

有序資料傳輸

重發丟失的資料報

捨棄重複的資料報

無差錯的資料傳輸

阻塞/流量控制

tcp:連線時有三次握手,關閉時有四次揮手,傳輸資料比udp更安全更穩定

udp:可以用於廣播,不用考慮資料有沒有被收到

java網路通訊TCP與UDP

system.out.println 客戶端啟動 socket socket new socket 192.168.0.33 8080 outputstream os socket.getoutputstream 會的輸出流 outputstreamwriter osw new outputstre...

網路通訊與協議 TCP與UDP

udpudp應用場景 tcp比較可靠 不容易粘包 不容易丟包 udp操作簡單 傳輸速度比較快 1.基於連線與無連線 2.tcp要求系統資源較多,udp較少 3.udp程式結構較簡單 4.流模式 tcp 與資料報模式 udp 5.tcp保證資料正確性,udp可能丟包 6.tcp保證資料順序,udp不保...

網路通訊 TCP和UDP 一

要搞清楚網路中程序間是如何通訊的,首先就得解決 如何標誌乙個程序 網路層的 ip位址 可以唯一標識網路中的主機,而傳輸層的 協議 埠 可以唯一標識主機中的應用程式 程序 這樣利用三元組 ip位址,協議,埠 就可以標識網路的程序了,網路中的程序通訊就可以利用這個標誌與其它程序進行互動。tcp和udp ...