DETALHE: Eu posso até ter copiado isso de um site do windows, mas isso não significa que eu não compreenda as linhas desse programa, a única coisa que eu não compreendi é porque mesmo com as bibliotecas e com as "libs" que eu mencionei ainda assim eu estou tendo um erro relacionado a "link". A sua resposta não será inutil.
#includeA lista de erros:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#pragma comment (lib, "Ws2_32.lib")
#pragma comment (lib, "Mswsock.lib")
#pragma comment (lib, "AdvApi32.lib")
#define WIN32_LEAN_AND_MEAN // Tanto faiz esse, não custa nada deixar ai
#define DEFAULT_BUFLEN 512
#define DEFAULT_PORT "27015"
int main(int argc, char **argv)
{
WSADATA wsaData;
SOCKET ConnectSocket = INVALID_SOCKET;
struct addrinfo *result = NULL,
*ptr = NULL,
hints;
char *sendbuf = "teste";
char recvbuf[DEFAULT_BUFLEN];
int iResult;
int recvbuflen = DEFAULT_BUFLEN;
if (argc != 2) {
printf("uso: %s nome\n", argv[0]);
return 1;
}
iResult = WSAStartup(MAKEWORD(2,2), &wsaData);
if (iResult != 0) {
printf("erro com WSAStartup: %d\n", iResult);
return 1;
}
ZeroMemory( &hints, sizeof(hints) );
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
hints.ai_protocol = IPPROTO_TCP;
iResult = getaddrinfo(argv[1], DEFAULT_PORT, &hints, &result);
if ( iResult != 0 ) {
printf("Falha no Getaddrinfo: %d\n", iResult);
WSACleanup();
return 1;
}
for(ptr=result; ptr != NULL ;ptr=ptr->ai_next) {
ConnectSocket = socket(ptr->ai_family, ptr->ai_socktype,
ptr->ai_protocol);
if (ConnectSocket == INVALID_SOCKET) {
printf("Falha no Socket: %ld\n", WSAGetLastError());
WSACleanup();
return 1;
}
iResult = connect( ConnectSocket, ptr->ai_addr, (int)ptr->ai_addrlen);
if (iResult == SOCKET_ERROR) {
closesocket(ConnectSocket);
ConnectSocket = INVALID_SOCKET;
continue;
}
break;
}
freeaddrinfo(result);
if (ConnectSocket == INVALID_SOCKET) {
printf("sem conecção com o server!\n");
WSACleanup();
return 1;
}
iResult = send( ConnectSocket, sendbuf, (int)strlen(sendbuf), 0 );
if (iResult == SOCKET_ERROR) {
printf("Falha no envio: %d\n", WSAGetLastError());
closesocket(ConnectSocket);
WSACleanup();
return 1;
}
printf("dados enviados: %ld\n", iResult);
iResult = shutdown(ConnectSocket, SD_SEND);
if (iResult == SOCKET_ERROR) {
printf("Falha no fechamento: %d\n", WSAGetLastError());
closesocket(ConnectSocket);
WSACleanup();
return 1;
}
do {
iResult = recv(ConnectSocket, recvbuf, recvbuflen, 0);
if ( iResult > 0 )
printf("dados recebidos: %d\n", iResult);
else if ( iResult == 0 )
printf("conecção fechada\n");
else
printf("falha ao reconectar: %d\n", WSAGetLastError());
} while( iResult > 0 );
closesocket(ConnectSocket);
WSACleanup();
}
test2.cpp: undefined reference to `WSACleanup@0'
test2.cpp: undefined reference to `recv@16'
test2.cpp: undefined reference to `WSAGetLastError@0'
test2.cpp: undefined reference to `closesocket@4'
test2.cpp: undefined reference to `WSACleanup@0'
collect2: ld returned 1 exit status
Execução terminada