TCP между Windows. NET программы на C # для Linux программы на C ++ - PullRequest
2 голосов
/ 06 июля 2011

Я новичок в теме компьютерных сетей и отправки данных с одного компьютера на другой.В настоящее время мне поручено интегрировать программу C # Kinect SDK с программой Linux C ++ Opengl / Covise.Затем программа C ++ должна получать и использовать выходные данные, сгенерированные Kinect.

Возможно ли, чтобы они общались друг с другом через TCP, UDP или что-либо еще, несмотря на то, что они написаны на разных платформах и языках?Или было бы лучше расширить программу C ++ с OpenNI?

В настоящее время установка Opencover / Covise - большая боль для меня.

Ответы [ 3 ]

2 голосов
/ 06 июля 2011

Конечно.Когда дело доходит до сети, не имеет значения, на каком языке программирования написаны сервер и клиенты. Вы действительно думаете, что многопользовательские флеш-игры имеют флеш-сервер, работающий на бэкэнде?

Вы можете найти кучуонлайн статьи о том, как писать серверы и клиенты, как открывать порты и прослушивать соединения, работать с сокетами.и т.д.

1 голос
/ 06 июля 2011

Я новичок в теме компьютерных сетей и отправки данных с одного компьютера на другой.В настоящее время мне поручено интегрировать программу C # Kinect SDK с программой Linux C ++ Opengl / Covise.

Круто, поздравляю с изучением новых вещей.

Возможно ли, чтобы они общались друг с другом через TCP, UDP или что угодно, несмотря на то, что они написаны на разных платформах иязыки?

Это было бы целью иметь «протокол», с которым мы все согласны.Очень похоже на то, как работает рукопожатие.Мы все согласны, что так и должно быть, и так оно и есть.Вместо того, чтобы отвечать на телефонные звонки и говорить «привет», причина, чтобы сказать «привет», состоит в том, чтобы дать другому уху пару слогов, чтобы распознать тональность и тон вашего голоса, прежде чем переварить следующий бит сообщения (правда).(Именно поэтому мы делаем рукопожатия в сети - убедитесь, что вы разговариваете с кем-то, а затем начинайте говорить.)

Или лучше было бы расширить программу C ++ с помощью OpenNI?

Если это требование для назначения, то сделайте это, но я не думаю, что добавление в другую библиотеку обязательно лучший ответ.Я бы придерживался более простых задач.

0 голосов
/ 06 июля 2011

Вы можете определенно общаться между языками и платформами по сети (TCP / UDP). Первое, о чем вам нужно беспокоиться, это как вы сериализуете и десериализуете данные или сообщения, которые вы передаете. Например, одна платформа может хранить целые числа в порядке байтов с прямым порядком байтов, а другая может использовать порядок байтов с прямым порядком байтов (также называемый сетевым порядком байтов). Кроме того, сложные структуры данных или объекты должны быть сериализованы так, чтобы их можно было легко интерпретировать с помощью другой платформы. Вы не можете просто использовать System.Serialization, например, в C #, и ожидать, что ее будет легко декодировать на другом конце. Существует множество наборов инструментов или API-интерфейсов для межплатформенного взаимодействия, таких как Swift, Protocol Buffers, SOAP, POX / REST и т. Д. Все они имеют различные компромиссы, которые могут сделать их более или менее подходящими для вашего конкретного приложения.

...