Заголовочные файлы C ++ для UDP в Windows? - PullRequest
5 голосов
/ 13 декабря 2010

У меня есть приложения linux, которые отправляют данные по протоколу UDP. Он использует следующие заголовочные файлы:

#include <stdio.h>
/* standard C i/o facilities */
#include <stdlib.h>
/* needed for atoi() */
#include <unistd.h>

/* defines STDIN_FILENO, system calls,etc */
#include <sys/types.h> /* system data type definitions */
#include <sys/socket.h> /* socket specific definitions */
#include <netinet/in.h> /* INET constants and stuff */
#include <arpa/inet.h> /* IP address conversion stuff */
#include <netdb.h>
#include <string.h> /* for string and memset etc */
/* gethostbyname */
#include <iostream>

#include <fstream>

#include <opencv/highgui.h>
#include <opencv/cv.h>
#include <opencv/cxcore.h> 

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

Какие файлы заголовков следует заменить в Windows (Visual Studio 2010)?

UPDATE:

Хорошо, теперь мой заголовок выглядит так:

#include <iostream>
#include <fstream>
#include "stdafx.h"

#include <cv.h>
#include <cxcore.h>
#include <highgui.h>

#include <winsock2.h>

Я получаю эту ошибку при попытке компиляции (и многие другие подобные ошибки):

Error   13  error C2011: 'fd_set' : 'struct' type redefinition  c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock2.h  132 1   Client

Ответы [ 4 ]

12 голосов
/ 13 декабря 2010

Во время компиляции вам нужно использовать Winsock2.h вместо заголовков Unix.

Во время компоновки включите ws2_32.lib, чтобы обеспечить связь с необходимой системной DLL.

6 голосов
/ 13 декабря 2010

Закомментируйте включаемые файлы, которые «отсутствуют», или поместите их в следующее:

#ifdef _WIN32
#define WIN32_LEAN_AND_MEAN 1
#include <winsock2.h>
#include <windows.h>
#else
// unix includes here
#endif
4 голосов
/ 14 декабря 2010

Вы хотите #include winsock2.h.Одна особенность, вы должны #include до , включая все остальное, в том числе:

#include <winsock2.h>
#include <windows.h>
4 голосов
/ 13 декабря 2010

Вам не нужно большинство из этих включений. Вам понадобится только winsock2.h и ссылка на ws2_32.lib .

.

Итак, для всего сетевого, просто включите winsock2.h .

...