udp協議
服務端
1'''2
udp 協議 又稱 資料報協議 sock_dgram34
'''5
from socket import * #
一般不這樣做 會重名 但寫socket可以這樣寫 因為要用到太多 會有大量的socket.
67 server =socket(af_inet,sock_dgram)
8 server.bind(('
127.0.0.1
',8080)) #
ip和埠 要繫結 服務端固定的ip埠9#
server.listen() # 不需要 掛起的鏈結數 udp 沒連線
1011
#server.accept() # 不需要 因為udp就沒連線12#
while true:13#
conn,addr = server.accept() # 幹連線迴圈的活
1415
while
true:
16 data,client_addr = server.recvfrom(1024)
17print('
客戶端資料:
',data) #
我要知道誰給我發的
18'''
19(b'data', ('127.0.0.1', 51182))
20(b'hello', ('127.0.0.1', 51182))
21'''
22server.sendto(data.upper(),client_addr)
2324 server.close()
客戶端
1'''2
udp 可以發空 資料報協議 說是發空,其實不是空 ,還有乙個ip 埠的資訊,發空時 帶個埠資訊
3tcp:不是一一對應的
4udp:是一一對應的 資料報 完整的
5'''
6from socket import * #
一般不這樣做 會重名 但寫socket可以這樣寫 因為要用到太多 會有大量的socket.
78 client =socket(af_inet,sock_dgram)9#
server.bind('127.0.0.1',8080) # ip和埠 要繫結 服務端固定的ip埠10#
server.listen() # 不需要 掛起的鏈結數 udp 沒連線
1112
#server.accept() # 不需要 因為udp就沒連線13#
while true:14#
conn,addr = server.accept() # 幹連線迴圈的活
1516
while
true:
17 msg = input('
>>>:
').strip() #
udp 可以發空 收到乙個空18#
if not msg:continue
19 client.sendto(msg.encode('
utf-8
'),('
127.0.0.1
',8080)) #
明確的指定發給誰 因為沒有連線了
2021 data,server_addr = client.recvfrom(1024)
22print('
服務端返回的資料:
',data,'
',server_addr)
23 server.close()
不會粘包的udp
服務端:
1#-*- coding:utf-8 -*-
2'''
3udp 協議 又稱 資料報協議 sock_dgram
4sendto recvfrom 一一對應 資料報協議 沒有粘包問題 udp 資料不安全 有可能傳送資料 > 1024 或者網路異常 資料沒了
5tcp: 資料一定要可靠
6遠端執行命令78
udp協議:9qq
10查詢操作eg:網際網路上 查詢時間 ntp時間伺服器 udp協議 eg:查網域名稱 轉成ip 埠 dns伺服器走的就是udp協議 能保證查詢效率高 資料雖然不可靠
11ntp時間伺服器 dns伺服器 qq 都是udp
12'''13#
from socket import * # 一般不這樣做 會重名 但寫socket可以這樣寫 因為要用到太多 會有大量的socket.14#
15#server = socket(af_inet,sock_dgram)16#
server.bind(('127.0.0.1',8080)) # ip和埠 要繫結 服務端固定的ip埠17#
18#res1 = server.recvfrom(1024)19#
print('第一次:',res1)20#
res2 = server.recvfrom(1024)21#
print('第二次:',res2)
2223
from socket import * #
一般不這樣做 會重名 但寫socket可以這樣寫 因為要用到太多 會有大量的socket.
2425 server =socket(af_inet,sock_dgram)
26 server.bind(('
127.0.0.1
',8080)) #
ip和埠 要繫結 服務端固定的ip埠
2728 res1 = server.recvfrom(4)
29print('
第一次:
',res1)
30 res2 = server.recvfrom(1024)
31print('
第二次:
',res2)
客戶端:
1'''2
udp 可以發空 資料報協議 說是發空,其實不是空 ,還有乙個ip 埠的資訊,發空時 帶個埠資訊
3tcp:不是一一對應的
4udp:是一一對應的 資料報 完整的額
5'''6#
from socket import * # 一般不這樣做 會重名 但寫socket可以這樣寫 因為要用到太多 會有大量的socket.7#
8#client = socket(af_inet,sock_dgram)9#
10#client.sendto(b'hello',('127.0.0.1',8080))11#
client.sendto(b'world',('127.0.0.1',8080))12#
client.close()
1314
from socket import * #
一般不這樣做 會重名 但寫socket可以這樣寫 因為要用到太多 會有大量的socket.
1516 client =socket(af_inet,sock_dgram)
1718 client.sendto(b'
hello
',('
127.0.0.1
',8080))
19 client.sendto(b'
world
',('
127.0.0.1
',8080))
20 client.close()
tcp vs udp
tcp基於鏈結通訊
udp無鏈結
考核:
socket 通訊 server client定義乙個學生類
元類? 使用元類定義乙個物件
粘包3次握手
封裝 繼承 多型
網路程式設計之UDP協議
將資料及源和目的封裝成資料報,不需要建立連線。每個資料報的大小限制在64k內。因無連線,是不可靠的協議,但是速度快。客戶端 1 建立udp傳輸的傳送端 2 建立udp的socket服務 3 將要傳送的資料封裝到資料報中 4 通過udp的socket服務獎資料報傳送過去 5 關閉socket服務 pu...
網路程式設計之UDP協議
1 實現的功能 能夠傳送和接收訊息,並且在發生886後退出 2 chatroom 類 public class chatroom 3 傳送執行緒sendthread 類public class sendthread implements runnable override public void r...
網路程式設計UDP協議方式
一,udp傳送和接受資料 1,傳送資料 1 建立傳送端的 socket物件 datagramsocket 2 建立資料,並把資料打包 datagrampacket 且注意傳入的引數格式 3 呼叫 datagramsocket物件的方法傳送資料 4 關閉 demo 如下 public static v...