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

379
Views
¿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
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!