Писать кроссплатформенные сетевые приложения нелегко с помощью стандарта BSD. Конечно, это будет работать, но вам придется сделать некоторые замены, такие как замена ioctl (при необходимости) на ioctlsocket (в Windows). Больше различий здесь .
Мой совет - использовать библиотеку, которая скрывает эти отвратительные различия и обеспечивает единый способ общения. Я лично использую ACE . У вас есть множество примеров, которые показывают, как создать сервер и клиент. Скопируйте из образцов и посмотрите, как они там делают. Их списки рассылки также очень помогают (не забудьте использовать PRF - см. Дерево исходных текстов для формы отчета о проблеме). Вы можете взять книги для получения дополнительной информации. Важное примечание: с помощью ace вы можете использовать функции-оболочки ACE, такие как socket, setsockopt, ioctl и т. Д., Не беспокоясь о том, что они не будут работать. К сожалению, это добавляет библиотечную зависимость, которая не всегда является опцией. Но у ACE есть более мощные функции, которые, я уверен, вам понравятся, когда вы их обнаружите. Подсказки: Реактор, Проактор.