Ci sono articoli o consigli sulla creazione di un server di chat C ++ con un client C #?

StackOverflow https://stackoverflow.com/questions/807846

  •  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.

È stato utile?

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. :)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top