Как написать программу для сокетной коммуникации с использованием win32 - PullRequest
2 голосов
/ 17 февраля 2009

Новый парень хочет узнать о программировании сокетов в win32. Я немного знаю о MFC, но начинать не стоит, поскольку он просто скрывает внутренние детали от программиста.

Ответы [ 8 ]

2 голосов
/ 17 февраля 2009

http://beej.us/guide/bgnet/

Руководство Биджа - довольно распространенная отправная точка. Прошло несколько лет с тех пор, как я начал с этого материала, но iirc, руководство использует сокеты Беркли и указывает на различия с winsock, где это необходимо.

2 голосов
/ 17 февраля 2009

Использовать функции winsock (Winsock2.h).

1 голос
/ 20 февраля 2009
1 голос
/ 18 февраля 2009

Небольшая подсказка (если вы используете Visual Studio и библиотеку Winsocket), что вам нужно вручную связать WS2_32.Lib. Я нахожу, что этот маленький шаг - что-то, что много начинающих пропускают, и получают некоторые странные ошибки (странные в глазах смотрящего) из-за этого. http://social.microsoft.com/Forums/en-US/vcgeneral/thread/cfefa4a5-1f1a-4987-8bc7-f3197cb5826c

Также; imho не стоит использовать MFC. В google-net есть множество отличных руководств по программированию winsocket:)

Удачи

1 голос
/ 18 февраля 2009

Я искренне согласен с ChrisW и приветствую вас за переход на MFC.

См. MSDN Winsock Reference для получения большой информации о WinSock.

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

1 голос
/ 17 февраля 2009

Ответ заключается в использовании API сокета win32.

В MSDN есть информация об этом API.

Он (так называемый «Winsock» API) аналогичен (основан на) Unix / Posix API, так же как и MSDN, много литературы (книг) об использовании сокетов в Unix также являются подходящими.

Google, вероятно, найдет вам примеры кода.

Вы захотите немного узнать о сетях: например, «IP-адрес» и «порт».

Вы хотите выбрать протокол (UDP или TCP).

Одной из особенностей Win32 является то, что вы можете использовать ReadFile и WriteFile, когда у вас есть подключенный сокет, что означает, что вы можете использовать опции для перекрывающегося ввода-вывода, которые связаны с ReadFile и WriteFile.

1 голос
/ 17 февраля 2009

Вы правы, что MFC затмит некоторые детали, я понятия не имею, почему они решили обернуть его.

Существует множество хороших книг и учебных пособий по программированию WinSock. Вот один;

http://www.codeproject.com/KB/IP/winsockintro01.aspx

0 голосов
/ 17 февраля 2009

Два варианта:

  1. написать код на основе файлового потока, который обращается к последовательному порту.
  2. использовать библиотеку C ++ для связи через последовательный порт (Google для этого)

Первый вариант означает написание кода «котла», так что для этого лучше использовать стороннюю библиотеку.

Самая распространенная «проблема запуска» при программировании последовательного порта - это установление связи с устройством. Вам НЕОБХОДИМО иметь правильные настройки для имени порта, скорости передачи, четности и т. Д. (Обычно указывается производителем устройства).

Тогда также будет «набор команд» для устройства. Например, если вы отправите '?' на устройство оно вернется с информацией об устройстве, такой как имя производителя и т. д. (например, команда '?' не является стандартной - набор команд различается в зависимости от устройства).

Все последовательные соединения работают так: - вы пишете команду на последовательный порт - опросить буфер чтения для ответа от устройства

Насколько мне известно, в C ++ или MFC нет встроенных классов связи через последовательный порт, но для этого есть много сторонних библиотек.

...