python udp通信示例代码
时间: 2023-09-02 20:14:00 浏览: 46
以下是一个简单的Python UDP通信示例代码:
发送端代码:
```python
import socket
host = '127.0.0.1' # 目标IP地址
port = 8888 # 目标端口号
# 创建UDP套接字
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 发送消息
msg = 'Hello, World!'
s.sendto(msg.encode(), (host, port))
# 关闭套接字
s.close()
```
接收端代码:
```python
import socket
host = '127.0.0.1' # 本机IP地址
port = 8888 # 本机端口号
# 创建UDP套接字
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 绑定套接字到本机IP和端口号
s.bind((host, port))
# 接收消息
data, addr = s.recvfrom(1024)
print('Received:', data.decode())
# 关闭套接字
s.close()
```
相关问题
给出udp通信示例代码
以下是一个简单的UDP通信示例代码,其中包括了发送方和接收方的代码:
发送方代码:
```python
import socket
UDP_IP = "127.0.0.1" # 目标IP地址
UDP_PORT = 5005 # 目标端口号
MESSAGE = b"Hello, World!" # 发送的消息内容
print("UDP target IP:", UDP_IP)
print("UDP target port:", UDP_PORT)
print("message:", MESSAGE)
# 创建UDP套接字
sock = socket.socket(socket.AF_INET, # Internet
socket.SOCK_DGRAM) # UDP
# 发送消息给目标IP地址和端口号
sock.sendto(MESSAGE, (UDP_IP, UDP_PORT))
```
接收方代码:
```python
import socket
UDP_IP = "127.0.0.1" # 本地IP地址
UDP_PORT = 5005 # 本地端口号
# 创建UDP套接字
sock = socket.socket(socket.AF_INET, # Internet
socket.SOCK_DGRAM) # UDP
# 绑定本地IP地址和端口号
sock.bind((UDP_IP, UDP_PORT))
print("UDP server listening on", UDP_IP, "port", UDP_PORT)
# 接收消息并打印
while True:
data, addr = sock.recvfrom(1024) # 缓冲区大小为1024字节
print("received message:", data.decode())
```
注意:在运行示例代码之前,请确保目标IP地址和本地IP地址是正确的。另外,由于UDP是无连接的协议,所以发送方和接收方的端口号可以不一样。
python udp通信
UDP(User Datagram Protocol)是一种无连接的协议,它不保证数据包的可靠性,但是具有传输速度快的优点。下面是使用Python实现UDP通信的简单示例:
## 发送端代码
```python
import socket
server_address = ('localhost', 8888)
message = 'Hello, World!'
# 创建UDP socket对象
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
try:
# 发送数据
print(f'sending {message}')
sent = sock.sendto(message.encode(), server_address)
finally:
# 关闭socket对象
print('closing socket')
sock.close()
```
## 接收端代码
```python
import socket
server_address = ('localhost', 8888)
# 创建UDP socket对象
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 绑定socket对象到地址和端口
sock.bind(server_address)
while True:
# 接收数据
data, address = sock.recvfrom(4096)
# 显示接收到的数据
print(f'received {len(data)} bytes from {address}: {data.decode()}')
```
在示例代码中,发送端使用`socket.sendto()`方法将数据发送到指定地址和端口。接收端使用`socket.bind()`方法绑定到指定地址和端口,并使用`socket.recvfrom()`方法接收数据。注意,`socket.recvfrom()`方法返回一个元组,第一个元素是接收到的数据,第二个元素是发送数据的地址和端口。