¿Por qué deberíamos usar el protocolo TCP en un cliente / servidor de programación de juegos Tic-tac-toe?

Porque es la opción más simple que hace el trabajo .

El análisis de Quora User tiene fallas en un aspecto crítico: al contrario de lo que mucha gente piensa, TCP no le da a la aplicación de envío la confirmación de la recepción de datos por parte de la aplicación receptora .

Cuando la aplicación de envío entrega algunos datos al SO para ser entregados, el SO devuelve un reconocimiento de que los datos están ahora bajo su cuidado y hará todo lo posible para enviarlos, no que “ya se hayan enviado y recibido” . Si la red falla en ese punto, el envío se retrasará … o posiblemente se eliminará por completo después de un largo retraso.

Incluso cuando los datos se han entregado a la máquina remota, la aplicación receptora puede estar en un estado que no sea “escuchar nuevos movimientos”, por lo que es posible que ni siquiera lea los datos entrantes. (Algo así sucede ocasionalmente en la Casa de Ho, cuando Quora me distrae a mitad de la conversación, para molestia considerable de mi esposa).

Esta es la razón por la cual su protocolo de juego tic-tac-toe (y realmente cualquier protocolo de aplicación que sincronice el estado entre participantes remotos) debe incluir reconocimientos a nivel de aplicación (es decir, el receptor debe enviar un mensaje de retorno, informando al remitente que el movimiento ha sido recibido y procesado ). Una vez que esto esté en su lugar, de repente te darás cuenta de que UDP es en realidad otra opción de transporte viable.

Entonces, ¿por qué elegir TCP? Porque escribir código de comunicaciones TCP es algo más fácil que UDP, ya que muchos problemas relacionados con las comunicaciones se manejan en el protocolo de transporte sin que su aplicación tenga que preocuparse por ello.

Para una explicación simplificada de por qué debería usar TCP para programar un juego de tres en raya, usaré ejemplos del mundo real. Supongo que el juego se juega en Internet.

Al elegir entre los protocolos TCP / UDP la mayor parte del tiempo irá con TCP, esto se debe a que el emisor recibe la conformación de que el receptor recibe la información. Mientras UDP el remitente envía los datos pero nunca recibe la conformación, el receptor recibe el mensaje completo.

Un gran ejemplo del mundo real es cuando hablas con familiares, amigos o una universidad en el trabajo, por lo general proporcionan algún tipo de información verbal o no verbal que están enumerando y entienden lo que estás hablando acerca de sacudir la cabeza o decir sí / ok. Si te perdiste algo o dijiste que comenzaste en medio de un tema que recibirías, les puse que no entienden o me perdí algo reenviado en TCP. Ningún tráfico UDP mundial es malo, es como hablar con un grupo grande en un auditorio que los usuarios entrenan para mí, ¿pueden enviarlo pero no tienen forma de confirmar que enviaron a todos los miembros de la audiencia que recibieron la información que están tratando? para enviar por este motivo, no querrá usar UDP en una situación como un juego para cualquier circunstancia en la que necesite confirmación de que el servidor o el cliente recibió la última transmisión o el movimiento hacia el oeste del juego.