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

381
Visualizações
¿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 à 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