树莓派Socket 连接Windows11(Python版本)
1.关闭防火墙
找到与防火墙相关得配置
找到与python相关的进行配置运行网络访问
2.编写服务端(树莓派)
import socket
def handle_client(client_socket):
try:
while True:
recv_data = client_socket.recv(1024) # 接收数据
if not recv_data:
break
print(f"收到消息: {recv_data.decode()}") # 打印收到的消息
finally:
client_socket.close() # 关闭客户端连接
def main():
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('192.168.137.1', 8080))
server_socket.listen(5) # 开始监听
print("服务器启动,等待连接...")
try:
while True:
client_socket, addr = server_socket.accept() # 接受一个新连接
print(f"接受到来自 {addr} 的连接")
handle_client(client_socket)
finally:
server_socket.close() # 关闭服务器套接字
if __name__ == '__main__':
main()
server_socket.bind((‘192.168.137.1’, 8080))中得ip地址为服务端的本地IP地址
3.编写客户端(Win11)
import threading
from socket import *
def send_msg():
send_data = 'Hello, this is a message from client'.encode() # 将字符串编码为字节
s.sendall(send_data) # 发送所有数据
print(f'已发送{len(send_data)}Bytes的数据')
addr = ('192.168.137.1', 8080) # 连接到服务端IP
s = socket(AF_INET, SOCK_STREAM)
s.connect(addr) # 连接到服务器
try:
while True:
th = threading.Thread(target=send_msg)
th.setDaemon(True)
th.start()
if input("按'q'退出: ").strip() == 'q': # 使用input来控制退出
break
finally:
s.close() # 关闭套接字
4.进行连接
首先运行服务端,其次进行运行客户端,运行结果如图:
5.注意点
1.有些小伙伴会在bind地方写上127.0.0.1,然后会导致目标连接被拒绝,这里我推荐一篇一台
的是可以得。
ps://blog.csdn.net/Johnor/article/details/133499641?spm=1001.2014.3001.5502
的是可以得。
2.也可以使用0.0.0.0因为这代表,直接在全部端口开放,这里不建议,因为比较危险。