У меня проблемы с запуском winsock, я просто сбит с толку и не знаю, что делать дальше.
getaddrinfo(NULL)
просто показывает, что он распознает, какие аргументы getaddrinfo
должен иметь, но он все еще говорит, что не может разрешить это ..
Когда я пытаюсь скомпилировать его в командной строке и добавить несколько флагов ошибок, вот что я получаю:
C:\MinGW\bin>g++ -O0 -g3 -Wall -c -fmessage-length=0 -o test2.exe C:\Users\David\
workspace\vmulti\Debug\test2.o -lws2_32 -lmingw32
g++: warning: C:\Users\David\workspace\vmulti\Debug\test2.o: linker input file un
used because linking not done
Вот ошибка, которую выдает мне компилятор, я компилирую с помощью mingw:
Function 'getaddrinfo' could not be resolved test.cpp /vmulti line 48 Semantic Error
Function 'getaddrinfo' could not be resolved test.cpp /vmulti line 50 Semantic Error
too few arguments to function 'int getaddrinfo(const char*, const char*, const addrinfo*, addrinfo**)' test.cpp /vmulti line 48 C/C++ Problem
Вот код:
ws2tcpip.h:
#if (_WIN32_WINNT >= 0x0501)
void WSAAPI freeaddrinfo (struct addrinfo*);
int WSAAPI getaddrinfo (const char*,const char*,const struct addrinfo*,
struct addrinfo**);
int WSAAPI getnameinfo(const struct sockaddr*,socklen_t,char*,DWORD,
char*,DWORD,int);
#else
/* FIXME: Need WS protocol-independent API helpers. */
#endif
test.cpp (моя программа):
#define _WIN32_WINNT 0x0501
#include <string.h>
#include <winsock2.h>
#include <iostream>
#include <stdio.h>
#include <stdint.h>
#include <ws2tcpip.h>
using namespace std;
#define MYPORT "3490" // the port users will be connecting to
#define BACKLOG 10 // how many pending connections queue will hold
void *get_in_addr(struct sockaddr *sa)
{
if (sa->sa_family == AF_INET) {
return &(((struct sockaddr_in*)sa)->sin_addr);
}
return &(((struct sockaddr_in6*)sa)->sin6_addr);
}
int main(int argc, char *argv[])
{
WSADATA wsaData;
if (WSAStartup(MAKEWORD(1,1), &wsaData) != 0) {
fprintf(stderr, "WSAStartup failed.\n");
exit(1);
}
struct sockaddr_storage their_addr;
int addr_size;
struct addrinfo hints, *res;
int sockfd, new_fd, len, numbytes;
memset(&hints, 0, sizeof hints);
hints.ai_family = AF_UNSPEC; // use IPv4 or IPv6, whichever
hints.ai_socktype = SOCK_STREAM;
hints.ai_flags = AI_PASSIVE; // fill in my IP for me
getaddrinfo(NULL); // Line 48
if(getaddrinfo(NULL, MYPORT, &hints, &res) == -1); // Line 50
cout << "Getaddrinfo error" << endl;