写一个不用服务器的不在一个局域网的Python和scoket连接
时间: 2023-12-14 22:35:45 浏览: 25
这里提供一个基于UDP协议的Python和socket连接的例子,不需要服务器,适用于不在同一个局域网的情况。
首先,需要明确两个主机的IP地址和端口号。假设主机A的IP地址为192.168.1.100,端口号为5000;主机B的IP地址为192.168.1.200,端口号为6000。
在主机A上,可以使用以下代码发送数据:
```python
import socket
# 定义发送方的IP地址和端口号
send_address = ('192.168.1.200', 6000)
# 创建socket对象
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 发送数据
message = "Hello, World!"
s.sendto(message.encode(), send_address)
# 关闭socket
s.close()
```
在主机B上,可以使用以下代码接收数据:
```python
import socket
# 定义接收方的IP地址和端口号
receive_address = ('192.168.1.200', 6000)
# 创建socket对象
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 绑定IP地址和端口号
s.bind(receive_address)
# 接收数据
data, address = s.recvfrom(1024)
print(f"Received message: {data.decode()} from {address}")
# 关闭socket
s.close()
```
运行以上代码后,主机A会向主机B发送一条消息,主机B会接收到这条消息并打印出来。
需要注意的是,UDP协议是无连接的,发送方不需要事先与接收方建立连接,直接发送数据即可。但是,由于UDP协议不保证数据的可靠性和顺序性,因此在实际应用中需要对数据进行额外的处理和校验。