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

384
Vistas
¿Por qué Net.Socket.Write() no envía la cadena completa a mi cliente TCP?

EDITAR: Estoy desesperado por hacer esto para poder pasar a un nuevo proyecto, aquí está la fuente: https://github.com/eanlockwood/TalkmonClient

Todo lo demás funciona bien. El servidor conoce muy bien los nombres de usuario asociados con los clientes y les envía información en consecuencia, pero lo extraño es que la cadena se corta después de la primera variable. Aquí está el bucle para un mensaje de envío típico:

 function SendMessage(msg, client) { const clientName = ClientNames.get(client); let recieverMsg = `${clientName}: ${msg}`; console.log(recieverMsg); Clients.forEach(elm => { if(elm != client) { elm.write(recieverMsg); } else { elm.write("You: " + msg); } }) }

msg es el chunk.toString() en el evento socket.on('data'), nuevamente, el nodo capta lo que significa esta cadena, se depura bien pero en el cliente (imagine el cmd de Windows) solo imprimirá el nombre de usuario y listo a la siguiente línea.

El bucle para el lado del cliente también es bastante simple,

 char buff[4090]; do { ZeroMemory(buff, 4090); int messageRevieved = recv(sock, buff, 4090, 0); if (messageRevieved > 0) { userInput->FreezeInput(); cout << buff << endl; userInput->UnFreezeInput(); } } while (0 == 0);

La entrada del usuario se maneja en su propia clase en un hilo separado, nuevamente, funciona bien.

Creo que tiene que ver con un malentendido de lo que realmente hacen socket.write y recv o tal vez simplemente no entiendo las cadenas de JavaScript lo suficiente. De cualquier manera, este problema es molesto porque es el último paso para crear mi aplicación.

También he hecho algunas pruebas exhaustivas, realmente no le gustan las cadenas de concatenación. Imprimirá todo hasta la primera variable, lo que significa que podría tener socket.write("jejejejejeje" + variable1 + "kadjgkdgad"); e imprimiría jejejejeje [valor de variable1] y simplemente se detendría

Tl; dr: El servidor escribirá en los sockets hasta la primera variable en una cadena concatenada y luego se detendrá, es muy extraño.

EDITAR: Las dependencias utilizadas en el servidor son Net y dotnet si eso marca la diferencia.

EDIT 2: Encontré otro problema. Después de enviar algunos mensajes, el cliente que envió los mensajes dejará de imprimir la parte "usted:" y solo imprimirá el mensaje, también lo hará del lado del servidor, pero es extraño porque los clientes receptores todavía imprimirán de quién es el mensaje. .

about 4 years ago · Juan Pablo Isaza
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