将Python本地服务器与Godot连接

发布于 2025-02-12 02:41:47 字数 582 浏览 1 评论 0 原文

我正在尝试将数据发送到Python服务器:

import socket

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind(('127.0.0.1',6000))

s.listen(5)

while True:
    clientsocket,address = s.accept()
    print(f"Got connection from {address} !")

来自Godot:

var socket = PacketPeerUDP.new()
socket.set_dest_address("127.0.0.1",6000)
socket.put_packet("quit".to_ascii())

基于此 link

但似乎不起作用,我该如何发送数据?

I'm trying to send data to a python server:

import socket

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind(('127.0.0.1',6000))

s.listen(5)

while True:
    clientsocket,address = s.accept()
    print(f"Got connection from {address} !")

from godot:

var socket = PacketPeerUDP.new()
socket.set_dest_address("127.0.0.1",6000)
socket.put_packet("quit".to_ascii())

based on this link

but it doesn't seem to be working, How do I send the data?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

北城半夏 2025-02-19 02:41:47

我对Python服务器并不熟悉,但是看起来您有一台python服务器,该服务器会倾听TCP连接,但在GoDot中,您可以通过UDP客户端连接。

如此答案 sock_stream适用于tcp Server和sock_dgram。

我不确定您想使用哪些。 UDP的示例服务器是:

import socket

s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.bind(('127.0.0.1',6000))
bufferSize  = 1024

#s.listen(5)
print("running")
while True:
    bytesAddressPair = s.recvfrom(bufferSize)
    message = bytesAddressPair[0]
    clientMsg = "Message from Client:{}".format(message)
    print(clientMsg)

我从这里复制了大部分:

如果您想拥有TCP服务器,则应更改Godot零件以使用TCP客户端。请参阅官方文档在这里

i'm not that familiar with python servers, but it looks like you have a python server that listens for TCP connections but in godot you connect via UDP Client.

As seen in this Answer SOCK_STREAM is for TCP Server and SOCK_DGRAM for UDP.

I am not sure which of those you want to use. An example server for UDP would be:

import socket

s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.bind(('127.0.0.1',6000))
bufferSize  = 1024

#s.listen(5)
print("running")
while True:
    bytesAddressPair = s.recvfrom(bufferSize)
    message = bytesAddressPair[0]
    clientMsg = "Message from Client:{}".format(message)
    print(clientMsg)

I copied most of it from here : Sample UDP Server

If you wanted to have a TCP Server you should alter the Godot part to use a TCP Client. See the official docs here

停顿的约定 2025-02-19 02:41:47

感谢 @RenéKling's

答案 服务器:

import socket

HOST = "127.0.0.1"
PORT = 6000

s= socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.bind((HOST, PORT))

while True:
    message, addr = s.recvfrom(1024)
    print(f"Connected by {addr}")

Godot:

extends Node2D
tool

export(bool) var btn =false setget set_btn

var socket = PacketPeerUDP.new()


func set_btn(new_val):
    socket.set_dest_address("127.0.0.1", 6000)
    socket.put_packet("Time to stop".to_ascii())

figured it out thanks to @René Kling 's answer

just incase someone wants the complete version

python server:

import socket

HOST = "127.0.0.1"
PORT = 6000

s= socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.bind((HOST, PORT))

while True:
    message, addr = s.recvfrom(1024)
    print(f"Connected by {addr}")

Godot:

extends Node2D
tool

export(bool) var btn =false setget set_btn

var socket = PacketPeerUDP.new()


func set_btn(new_val):
    socket.set_dest_address("127.0.0.1", 6000)
    socket.put_packet("Time to stop".to_ascii())
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文