简体   繁体   English

用godot连接python本地服务器

[英]Connect python local server with godot

I'm trying to send data to a python server:我正在尝试将数据发送到 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} !")

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?但它似乎没有工作,我如何发送数据?

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.我对 python 服务器不太熟悉,但看起来你有一个 python 服务器,它监听 TCP 连接,但在 godot 中你通过 ZF937EF036BFED238 客户端连接。

As seen in this Answer SOCK_STREAM is for TCP Server and SOCK_DGRAM for UDP.如本答案所示,SOCK_STREAM 适用于 TCP 服务器,SOCK_DGRAM 适用于 UDP。

I am not sure which of those you want to use.我不确定您要使用哪一个。 An example server for UDP would be: 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)

I copied most of it from here: Sample UDP Server我从这里复制了大部分内容: 示例 UDP 服务器

If you wanted to have a TCP Server you should alter the Godot part to use a TCP Client.如果您想要一个 TCP 服务器,您应该更改 Godot 部分以使用 TCP 客户端。 See the official docs here此处查看官方文档

figured it out thanks to @René Kling 's answer感谢@René Kling 的回答,弄明白了

just incase someone wants the complete version以防有人想要完整版

python server: python 服务器:

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())

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM