Logo Hardware.com.br
Plastico Bolha
Plastico Bol... Novo Membro Registrado
2 Mensagens 0 Curtidas

Cliente (de um servidor) em "C"

#1 Por Plastico Bol... 18/02/2011 - 12:15
Oi ao pessoal tchau.gif.Por favor se alguem souber me ajude. Estou tendo um erro de "links", mesmo tendo colocado bibliotecas de sobra e ter mencionado algumas "libs", Nesse programinha estou usando DevC++ 4.9.9.2. Abaixo tem a lista de erros. Obrigado Desde já pela Paciência mostrando_dentes.png. So um
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.

#include
#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();
}


A lista de erros:
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
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal