Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

303
Views
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
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!