соединение между сокетами Windows и Linux в c

Я использую модуль socket в python для отправки команд на мой Raspberry Pi для включения и выключения контактов GPIO.

Я перехожу на C, где я буду использовать winsock.h и winsock2.h для создания сервера на своем ПК и sys/socket.h для создания клиента на raspberry pi.

Можно ли установить связь между этими двумя разными библиотеками?

Я только хочу создать сокет, bind, send и recv. Никаких других операций.


person Rose White    schedule 16.03.2017    source источник
comment
соединение не между двумя библиотеками, а между двумя машинами, и любая библиотека в порядке.   -  person bansi    schedule 16.03.2017
comment
Неважно, какую библиотеку вы используете. Его базовый протокол имеет значение. Если вы создаете серверный сокет с использованием протокола TCP, вы должны иметь возможность подключиться к нему с любого клиента, использующего любую операционную систему и оборудование с использованием протокола TCP, при условии, что обе машины находятся в одной сети.   -  person prashanthns    schedule 16.03.2017
comment
Вы пробовали это и потерпели неудачу?   -  person Mad Physicist    schedule 16.03.2017
comment
Мне еще не удалось создать сокет winsock.h, но sys/socket.h на Raspberry Pi сработал, и я смог установить соединение между сокетом и замазкой.   -  person Rose White    schedule 16.03.2017
comment
обновление: опять же, мне еще не удалось создать сокет winsock.h, но соединение между python socket и sys/socket сработало, поэтому я уверен, что вы, ребята, сказали правильно, библиотека не имеет значения, имеет значение только то, использую ли я TCP или UDP   -  person Rose White    schedule 17.03.2017
comment
Сокет — это объект ОС. Нет сокетов winsock, отличных от сокетов python, отличных от сокетов tcl, отличных от..., все они одно и то же, вы просто пытаетесь использовать его через разные обертки. Если у вас возникли проблемы с использованием winsock, задайте вопрос об этой проблеме.   -  person n. 1.8e9-where's-my-share m.    schedule 21.03.2017
comment
@н.м. я пытаюсь создать сокет, используя winsock.h, но программа всегда выдает ошибку сокета в качестве вывода, так как выполняется оператор if, вот мой код >gyazo.com/5247f07f226031cb5fb650c3ab629137 в чем моя ошибка?   -  person Rose White    schedule 21.03.2017
comment
Воспользуйтесь этой ссылкой, чтобы задать вопрос.   -  person n. 1.8e9-where's-my-share m.    schedule 21.03.2017


Ответы (1)


Я рекомендую вам проверить эту документацию, есть несколько примеров для подключения Windows Server / Client:

https://docs.microsoft.com/en-us/windows/win32/winsock/getting-started-with-winsock

Для Linux вам нужно сделать некоторые адаптации, как вы, возможно, знаете или уже внедрили, я сделал то же самое для 2 настольных приложений для отправки данных с ПК с Linux (клиент) на ПК с Windows (сервер). Как упоминалось в комментариях, устройства не имеют значения, пока они находятся в одной сети и следуют протоколу TCP/IP.

Я смог сделать это, даже подключившись через VPN. К сожалению не могу поделиться кодом. Но я разработал это сообщение на основе документации по ссылке выше.

Я надеюсь, что это помогает. На самом деле, если вы хотите использовать Python в Raspberry Pi, вы также можете использовать встроенный пакет Python: https://docs.python.org/3/library/socket.html

И вы можете использовать код по ссылке выше в Windows. Это должно быть прямолинейно.

person Wambitz    schedule 24.08.2020