[toc]
---
使用使用`socke`t進行`udp`通信, 輸入"close"后關閉
#### 一、服務端代碼`UdpServer.py`
```
from socket import *
from time import ctime
# 創建socket, SOCK_DGRAM 指定的是datagram(UDP)
udp_socket = socket(AF_INET, SOCK_DGRAM)
hostname = "192.168.0.58" # 主機地址
print("localhost: ", hostname)
port = 12345
udp_socket.bind((hostname, port)) # 綁定socket到本地地址
while True:
print("server等待接收數據...")
data, address = udp_socket.recvfrom(1024) # 此方法類似于recv(buffersize, flags), 但是返回地址信息
data = data.decode("utf-8")
print("server接收到數據: %s" % data)
if "close" in data:
udp_socket.sendto("server關閉".encode("utf-8"), address)
break
data = ("server " + ctime()).encode("utf-8")
udp_socket.sendto(data, address)
udp_socket.close()
```
#### 二、客戶端代碼`UdpClient.py`
```
from socket import *
host = "192.168.0.58" # 服務端主機地址
port = 12345 # 服務端端口
udp_socket = socket(AF_INET, SOCK_DGRAM)
while True:
data = input("輸入要發送的內容:")
if data:
udp_socket.sendto(data.encode("utf-8"), (host, port))
print("client已發送數據:%s" % data)
data, addr = udp_socket.recvfrom(1024)
data = data.decode("utf-8")
print("client接收到的數據:%s" % data)
if "close" in data:
break
udp_socket.close()
```