用python编写一个socket udp接收代码
时间: 2023-09-16 17:11:22 浏览: 101
以下是一个简单的Python UDP接收代码示例:
```python
import socket
UDP_IP = "127.0.0.1" # 接收IP地址
UDP_PORT = 5005 # 接收端口号
# 创建UDP套接字
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 绑定IP地址和端口号
sock.bind((UDP_IP, UDP_PORT))
while True:
# 接收UDP数据
data, addr = sock.recvfrom(1024)
print("Received message:", data.decode())
```
可以按照以下步骤运行该代码:
1. 将以上代码保存为`udp_receive.py`文件。
2. 打开终端或命令行窗口并进入该文件所在目录。
3. 运行该文件:`python udp_receive.py`
4. 开启另一个终端或命令行窗口并使用`netcat`命令发送UDP数据包:`echo "Hello, UDP!" | nc -u 127.0.0.1 5005`。
5. 返回第一个终端或命令行窗口,可以看到输出了接收到的数据:"Received message: Hello, UDP!"。
相关问题
python 编写udp socket代码 既可以发送,又可以接收
在Python中,你可以使用socket模块创建UDP套接字来发送和接收数据。以下是一个简单的示例,展示了如何创建一个同时支持发送和接收的UDP服务器:
```python
import socket
def create_socket():
# 创建一个UDP套接字
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 绑定到本地地址和端口
server_address = ('localhost', 12345) # 改成你想监听的IP和端口号
sock.bind(server_address)
print(f'Server started on {server_address[0]}:{server_address[1]}')
return sock
def send_data(sock):
# 发送数据给指定地址
message = 'Hello, UDP!'
client_address = ('remote_ip', remote_port) # 改成目标IP和端口
sock.sendto(message.encode(), client_address)
def receive_data(sock):
# 接收数据
data, addr = sock.recvfrom(4096) # 最大接收数据量
print(f'Received from {addr}: {data.decode()}')
if __name__ == "__main__":
# 初始化服务器套接字
server_sock = create_socket()
while True:
# 检查是否有新的连接请求
incoming_message, client_addr = server_sock.recvfrom(4096)
print(f'Received message: {incoming_message.decode()}')
# 可以选择回复或处理收到的消息
# 调用send_data()函数向客户端响应
send_data(server_sock)
# 也可以在这里处理消息,比如存入数据库等
# 决定是否继续接收
continue_receiving = input("Do you want to receive more (y/n)? ")
if continue_receiving.lower() != 'y':
break
# 关闭套接字
server_sock.close()
```
在这个例子中,服务器会在指定的端口等待来自客户端的数据。当你启动这个服务器,它会不断循环接收和回应数据。你可以通过修改`send_data()`函数的参数来发送数据给其他客户端。
请注意,这个示例假设网络环境允许,没有考虑异常处理和其他可能出现的问题。在实际应用中,你还需要根据需求增加适当的错误处理和功能。
python Socket编写UDP聊天室
以下是一个简单的UDP聊天室的Python Socket程序:
服务端代码:
```python
import socket
# 创建UDP socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 绑定地址和端口
server_address = ('localhost', 8888)
server_socket.bind(server_address)
# 接收客户端消息并广播
while True:
message, address = server_socket.recvfrom(1024)
print("{} says: {}".format(address, message.decode()))
server_socket.sendto(message, address)
```
客户端代码:
```python
import socket
# 创建UDP socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 获取服务端地址和端口
server_address = ('localhost', 8888)
# 循环发送消息
while True:
# 输入消息
message = input('Please input message: ')
# 发送消息
client_socket.sendto(message.encode(), server_address)
# 接收消息
message, address = client_socket.recvfrom(1024)
print("Server says: {}".format(message.decode()))
```
在运行程序之前,需要先在命令行中启动服务端程序,然后再启动多个客户端程序。每个客户端程序就可以发送消息到服务端,并且可以收到其他客户端发送的消息。
阅读全文