Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

293
Visualizações
El envío y la recepción de datos desde localhost en Unity provocó el error "IOException: demasiados archivos abiertos"

Para probar la parte de red de mi aplicación Unity, tengo un objeto de juego "imitado" que se mueve de acuerdo con la entrada del teclado. El componente del administrador de redes (1) obtiene los datos de movimiento del "imitatee" y los envía a un servidor localhost node.js usando PUT y también (2) recupera los datos del host local y los aplica al objeto "imitator". El programa funcionó bien, pero después de un tiempo recibí el error:

 IOException: Too many open files

También apareció una ventana en el editor de Unity que decía "Error al abrir archivos" y luego el editor se bloqueó. Creo que fue causado por la memoria que no se eliminó correctamente, pero no he descubierto exactamente cómo. Aquí está el código de GameManager:

NetworkingManager.cs

 public class Data { public float posX; ... public Data(float posX...) { this.posX = posX; ... } } public class NetworkingManager : MonoBehaviour { private GameObject imitator; private GameObject imitatee; private Data data; private string jsonData; private Data receivedData; private string uri = "http://localhost:3000/"; private void Awake() { // Assign references ... } private IEnumerator SendData() { data = new Data( imitatee.transform.position.x, ... ); jsonData = JsonUtility.ToJson(data); using (UnityWebRequest req = UnityWebRequest.Put(uri, jsonData)) { req.SetRequestHeader("Content-Type", "application/json"); yield return req.SendWebRequest(); if (req.isNetworkError || req.isHttpError) { Debug.Log(req.error); } } } private IEnumerator ReceiveData() { using (UnityWebRequest req = UnityWebRequest.Get(uri)) { yield return req.SendWebRequest(); if (req.isNetworkError) { Debug.Log(req.error); } else { receivedData = JsonUtility.FromJson<Data>(req.downloadHandler.text); imitator.transform.position = new Vector3( receivedData.posX, ... ); ... } } } void Update() { StartCoroutine(SendData()); StartCoroutine(ReceiveData()); } }

Además, no se registró ningún error para el backend de node.js.

backend.js

 const express = require('express') const app = express() app.use(express.json()) const port = 3000 var data app.get('/', (req, res) => { if (data) res.json(data) }) app.put('/', (req, res) => { data = req.body console.log("Received " + req.body) }) app.listen(port, () => { console.log(`App listening at http://localhost:${port}`) })

¡Aprecio tu ayuda!

over 4 years ago · Santiago Trujillo
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda