Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

284
Vistas
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 la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda