Ci sono articoli o consigli sulla creazione di un server di chat C ++ con un client C #?
-
03-07-2019 - |
Domanda
La mia classe attuale sta pianificando di creare un gioco di rete di base, ma abbiamo deciso di assumerci il compito di creare un server C ++ con un client C #. Capisco che questo è probabilmente un compito difficile, ma mi chiedevo se ci fosse qualche consiglio su come farlo accadere.
Mi dispiace di non avere più informazioni di queste. Stiamo appena iniziando e vogliamo solo assicurarci che ciò sia possibile entro il lasso di tempo che abbiamo.
Soluzione
Funziona bene. C # e C ++ supportano entrambe le connessioni di rete TCP e UDP, in molti modi. O funzionerebbe bene per il client o il server.
I problemi principali che devi tenere d'occhio sono decidere come trasmettere i tuoi dati e assicurarti che tutti i pacchetti che passi attraverso il filo siano serializzati / deserializzati allo stesso modo.
Questo sarebbe più semplice se dovessi usare la stessa lingua (o almeno le librerie) su entrambi i lati, ovvero: se hai usato C ++ / CLI per il server e bloccato con alcuni degli stessi strumenti .NET gestiti per funzionare con trasmissione dati.
Altri suggerimenti
Non è davvero un grosso problema, a patto che tu abbia un buon protocollo. Ai bit sul filo non importa quale lingua è stata usata per scrivere il programma che li interpreta.
Per protocollo intendo che hai bisogno di una chiara comprensione di chi dovrebbe fare cosa quando, cosa dire, e cosa aspettarsi indietro.
Ad esempio, un server echo e il suo client potrebbero aspettarselo
- parla prima il cliente
- esiste un identificatore ben compreso per contrassegnare la fine dell'input del client
- il client attenderà che il server risponda prima di parlare di nuovo
- esiste un identificatore ben compreso per contrassegnare la fine dell'output del server.
E così via. Un client diverso che ha inviato la lunghezza del messaggio prima del messaggio anziché utilizzare un identificatore di fine input non funzionerebbe con il server originale, a causa delle incompatibilità del protocollo.
I protocolli possono essere flessibili, ma è necessario tenere conto di tale flessibilità nel protocollo stesso.
Come è stato detto da tutti, questo non è affatto un problema se il tuo protocollo di chat è ben progettato. Solo se stessi usando hack come BinaryFormatter per serializzare direttamente oggetti CLR sul filo avresti un problema ...
Consiglio di utilizzare protocolli esistenti (ad es. IRC) e / o librerie nella misura consentita.
Se è in esecuzione tutto in un dominio Windows, potresti considerare DCOM. Altrimenti, sceglierei i servizi web (SOAP toolkit per C ++) o forse REST.
Per un programma di chat, prova a utilizzare un protocollo di chat.
Esamina XMPP e vedi se puoi usarlo o una versione ridotta. Partire da ciò che gli altri hanno capito non è mai una cattiva idea. Per lo meno puoi vedere cosa non ti piace. :)