[英]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())
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.