¿Puedo escribir una aplicación de servidor / cliente que use sockets en dos idiomas diferentes? Por ejemplo, ¿un servidor en C o C ++ y un cliente en Java o Python?

Sí definitivamente. En realidad es muy común hacerlo. Quizás no esos idiomas exactos en esos lugares exactos, pero es casi la forma predeterminada.

Las razones principales para hacerlo es porque algunos idiomas tienden a tener bibliotecas disponibles / código ya escrito / facilidad de ciertas tareas. Por lo tanto, algunos son más fáciles de usar en un caso que en otro. Usted tiene control sobre el hardware del servidor, por lo que hacer un programa de servidor compilado no es difícil. Pero el hardware del cliente podría ser cualquier cosa, no es tan fácil hacer algo que se ejecute en todas partes: las opciones son mucho menores o el trabajo es mucho más.

Hay posibles problemas con las comunicaciones entre estos si utiliza idiomas diferentes. Pero esa es la razón por la cual se han inventado los estándares de comunicación. Para garantizar que los datos estén formateados de manera coherente entre diferentes hardware y software.

Te aconsejo que elijas algún protocolo disponible en todos los idiomas que usarás cuando tus programas se comuniquen entre sí. Algunos pueden ir con algo como XML / JSON: codificación lenta, texto legible, el tamaño de los datos es un poco grande. Pero afortunadamente están disponibles en casi todo. Es cuando la velocidad y el tamaño de los datos es un problema cuando es un poco más complicado. En cuyo caso necesita un protocolo binario. Por ejemplo, una buena opción podría ser algo como ProtocolBuffers diseñado por google, para una codificación rápida y un tamaño de datos pequeño, aunque solo datos binarios en lugar de texto. Es posible que ya exista algo así en los idiomas que elija, rara vez es necesario diseñar uno propio, y generalmente es una mala idea (mucho trabajo y muchas dificultades solo para reinventar las ruedas).

Si seguro.

Puede escribir un programa de servidor en C ++ y un programa de cliente en Java o C.
Lo que debe preocuparse es el orden de bytes de la red. P.ej. Java usa Big endian y C / C ++ en la ventana usa little endian.

A2A

Ciertamente, pero también podrías usar el mismo lenguaje para hacerte la vida más fácil. La razón principal para usar diferentes idiomas es elegir el mejor idioma para el proyecto. Mientras los idiomas puedan entender los datos, no debería haber ningún problema con respecto a los programas individuales.

More Interesting

Diseñé una aplicación pero no la puse en el mercado. Me acabo de dar cuenta de que otra aplicación tiene características / servicios similares. ¿Me pueden demandar si lo pongo en el mercado?

¿Los desarrolladores de software hacen un verdadero "desarrollo de software" en TCS / CTS / Infy y empresas de TI similares?

¿Qué debe pedirle a un desarrollador de iOS que haga para que otros desarrolladores entiendan el código que hacen?

¿Cómo es ser ingeniero de software en CloudFlare?

¿Qué te hará salir de una entrevista de desarrollo de software?

¿Cuáles son las consideraciones clave antes de seleccionar una empresa de desarrollo de software?

¿Cuántos programadores se necesitan para este tipo de proyecto?

¿Cómo se mantienen actualizados los desarrolladores de software en la explosión de bases de datos "políglotas" y el espacio de marcos web?

Cómo hacer que mi Dev Manager entienda mi esfuerzo para completar una tarea difícil

Construyo aplicaciones web. ¿Soy considerado un desarrollador web, programador, ingeniero de software o desarrollador de software?

Como desarrollador de software y empleado, ¿todo lo que creo pertenece a mi empleador? Si este es el caso, ¿cómo exhibo mi trabajo o publicito mi conjunto de habilidades?

¿Es realista pedir dos meses de vacaciones no remuneradas durante el verano, como desarrollador de software con 3 años de experiencia?

Cómo definir una obra maestra en el desarrollo de software

Soy un desarrollador de software que también está interesado en el análisis de negocios, ¿qué perfil en la industria del software puede obtener el trabajo que me interesa hacer?

¿Cuáles son las diferencias entre un programador, un desarrollador, un codificador y un arquitecto?