UDPserver.py UDPclient.py UDP套接字模型 UDP不需要構成連接,直接發送即可 服務端模型: s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) s.bind(('',25555)) data,c_addr = s.rec ...
UDPserver.py
1 import socket 2 #導入套接字模塊 3 4 s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) 5 # - socket.AF_INET:IPV4 6 # - socket.STREAM:TCP 7 # - socket.DGRAM:UDP 8 9 s.bind(('',25555)) 10 #綁定套接字有效地址和埠 11 #''空位任何地址 本地的127.0.0.1 和區域網還有自己真實的ip 12 print('[+] Server Open.....') 13 14 while True: 15 try: 16 data,c_addr = s.recvfrom(1024) 17 #一次性接受1024bytes的數據 ,返回一個元組,其中有數據和地址 18 #UDP不需要構成連接,直接發送即可 19 print('from:',c_addr) 20 #c_addr是一個地址,發送消息的客戶端的IP和埠的二元組 21 print('say:%s'%(data.decode('utf-8'))) 22 msg = data.decode('utf-8') 23 s.sendto(msg.encode('utf-8'),c_addr) 24 #發送信息,其中有兩個參數,一個是信息,一個是目標地址和埠 25 except KeyboardInterrupt: 26 break 27 28 print('[+] Server Close......') 29 s.close
UDPclient.py
1 import socket 2 #導入套接字模塊 3 4 c = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) 5 # - socket.AF_INET:IPV4 6 # - socket.STREAM:TCP 7 # - socket.DGRAM:UDP 8 9 while True: 10 try: 11 msg = input('>>>') 12 if msg == 0: 13 #判斷輸入是否為空 就是直接回車了 14 continue 15 #UDP不需要構成連接,直接發送即可 16 c.sendto(msg.encode('utf-8'),('127.0.0.1',25555)) 17 #發送消息,其中兩個參數,第一個是要發送的信息 18 #第二個是發送的ip地址和埠,是一個元組 19 20 data,s_addr = c.recvfrom(1024) 21 22 #c_addr是一個地址,發送消息的客戶端的IP和埠的二元組 23 print('$: %s'%(data.decode('utf-8'))) 24 except KeyboardInterrupt: 25 break 26 27 c.close()
-
UDP不需要構成連接,直接發送即可
-
服務端模型:
-
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
-
s.bind(('',25555))
-
data,c_addr = s.recvfrom(1024)
-
別人發來的消息 就直接發到s服務端套接字了
-
data:發來的數據
-
c_addr:誰發的
-
-
s.sendto(msg, c_addr)
-
-
-
send recv
-
sendto recvfrom
-
都是阻塞的
-