UDP:
TCP是建立可靠連接,並且通信雙方都可以以流的形式發送數據。相對TCP,UDP則是面向無連接的協議。
使用UDP協議時,不需要建立連接,只需要知道對方的IP地址和端口號,就可以直接發數據包。但是,能不能到達就不知道了。
雖然用UDP傳輸數據不可靠,但它的優點是和TCP比,速度快,對於不要求可靠到達的數據,就可以使用UDP協議。
服務端程序:
# 1 創建套接字,並綁定到當地地址 socket,bing # 2 直接接收數據從buffer。Recvfrom(),這個函數接受到數據,和#sender的地址(主機號,端口號),當然也可以發送數據到客戶端,用#sendto(data,addr) # 3 關閉套接字 close() # 偽代碼: Ss=socket() #創建套接字 ss.bind() #綁定 inf_loop: #無限循環 ss.recvfrom()/sendto() #對話 ss.close() #關閉套接字
#我的程序: import socket s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) s.bind(('127.0.0.1',9998)) print('Bind up on 9999......') while 1: data,addr = s.recvfrom(1024) print('Receive from %s:%s.....'%addr) #addr為一個元組 '127.0.0.1':9999 s.sendto(b'Hello,%s'+data,addr) #s.sendto(data[, flags], address) #或者 s.sendto(('Hello, %s!' % data.decode('utf-8')).encode('utf-8'), addr) #或者 s.sendto(b'ddddddd',addr)
客戶端程序:
# 1 創建套接字,socket # 2 進入循環,發送接收數據 sendto ,recvfrom # 3 關閉套接字 close() # 偽代碼: Cs=socket() #創建 Comm_loop: #循環接收發送 Cs.sendto()/recvfrom() #對話 Cs.close() #關閉
#我的程序: import socket s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) for data111 in [b'chenhang',b'wangyadan',b'wust',b'hustwb']: s.sendto(data111,('127.0.0.1',9998)) print(s.recv(1024).decode('utf-8')) s.close()