Heldinho Postado Janeiro 20, 2005 Denunciar Share Postado Janeiro 20, 2005 Bom pessoal, é o seguinte.. encontrei um tutorial sobre como programar Sockets que parecia ser bem fácil.. olhem:Em ingles(Completo)Em portugues(Menos coisas do que o ingles)bom, até aí tudo bem.. acho que muitas pessoas procuram por isso.. mas tem um problema.. esses tutoriais são pra linux.. será que alguém conhece ou sabe fazer o que tem nesses tutoriais só q pra windows?Bom.. Agradeço desde já..Até +!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kandrade Postado Janeiro 26, 2005 Denunciar Share Postado Janeiro 26, 2005 já passei por esse problema.......algumas libs são proprias do GCC um compilador C para Linux.............o pior e que eu não consegui resolver o problema com o Windows.........ate tem como resolverse você portar essas libs para Windows................agora........o GCC é um super compilador e o Linux é um super S.O..............aconselho a testa-los...................te+................. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fbafelipe Postado Janeiro 29, 2005 Denunciar Share Postado Janeiro 29, 2005 tenta no site da msdn: msdneu to (tentando) aprender a usar sockets no ruwindows, depois vou estudar os sockets no linux, valeu o link...mas tipo, eu dei uma olhada no msdn, tb to procurando um monte de coisa no google, já consegui escrever um codigo que deveria funcionar, mas essa linha se recusa a compilar: serverSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); da esse erro: "'socket' cannot be used as function"eu to usando o dev-cpp Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Janeiro 29, 2005 Denunciar Share Postado Janeiro 29, 2005 tenta no site da msdn: msdneu to (tentando) aprender a usar sockets no ruwindows, depois vou estudar os sockets no linux, valeu o link...mas tipo, eu dei uma olhada no msdn, tb to procurando um monte de coisa no google, já consegui escrever um codigo que deveria funcionar, mas essa linha se recusa a compilar: serverSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); da esse erro: "'socket' cannot be used as function"eu to usando o dev-cpp Você incluiu o cabeçalho <winsock2.h>? E, além disso, você tem que linkar o arquivo libws2_32.a (Projeto -> Opções do Projeto -> Parâmetros -> Adicionar Arquivo).Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 iSoron Postado Janeiro 30, 2005 Denunciar Share Postado Janeiro 30, 2005 Opa, Graymalkin, só faltou mesmo iniciar o WSAData. Cara, se você quer um bom tuto de socks, leia esse:Beej's Guide to Network ProgrammingE atençao especial aqui:Note for Windows Programmers[]'siSoron. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fbafelipe Postado Janeiro 30, 2005 Denunciar Share Postado Janeiro 30, 2005 o header winsock2.h já estava sendo incluido, eu tb adicionei a libws2_32.a, e iniciei o WSAData, e continua dando o mesmo erro...ai vai o codigo completo: #include <stdio.h> #include <windows.h> #include <winsock2.h> #include <wininet.h> #define BUFFER 1024 #define MSG "SUCESSO!" int main(){ SOCKET serverSocket, socket; char buffer[BUFFER]; struct sockaddr_in service; int lido, enviado, i; WSADATA wsaData; if (WSAStartup(MAKEWORD(1, 1), &wsaData) != 0){ printf("WSAStartup failed.\n"); exit(1); } serverSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (serverSocket == INVALID_SOCKET){ printf("Ocorreu um erro!\n"); getch(); exit(1); } service.sin_family = AF_INET; service.sin_addr.s_addr = inet_addr("127.0.0.1"); service.sin_port = htons(666); if (bind(serverSocket, (SOCKADDR*)&service, sizeof(service)) == SOCKET_ERROR){ printf("erro no bind()\n"); closesocket(serverSocket); getch(); exit(1); } if (listen(serverSocket, 1) == SOCKET_ERROR){ printf("Erro escutando socket\n"); closesocket(serverSocket); getch(); exit(1); } socket = accept(serverSocket, NULL, NULL); if (socket == INVALID_SOCKET){ printf("Erro no socket\n"); closesocket(socket); closesocket(serverSocket); getch(); exit(1); } lido = recv(socket, buffer, BUFFER, 0); if (lido == SOCKET_ERROR){ printf("Erro ao receber dados\n"); closesocket(socket); closesocket(serverSocket); getch(); exit(1); } printf("%d bytes recebidos\nData:\n", lido); for (i = 0; i < lido; i++) printf("%c", buffer[i]); printf("\n\n"); enviado = send(socket, MSG, strlen(MSG), 0); printf("Dados enviados com sucesso!\n"); closesocket(socket); closesocket(serverSocket); getch(); return 0; } eu tb to aprendendo sockets no linux, e ironicamente, to tento o mesmo problema, com a mesma funcao! depois eu posto aqui o codigo que to tentando compilar no linux... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fbafelipe Postado Janeiro 30, 2005 Denunciar Share Postado Janeiro 30, 2005 ta ai o codigo que to tentando compilar no linux: #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #define MAX 10 #define BUFFER 1024 #define MSG "SUCESSO!\n" int main(){ struct sockaddr_in addr; int serverSocket, socket, length, i; char buffer[BUFFER]; serverSocket = socket(AF_INET, SOCK_STREAM, 0); if (serverSocket == -1){ printf("Ocorreu um erro ao abrir serverSocket!\n"); exit(1); } addr.sin_family = AF_INET; addr.sin_port = htons(12345); addr.sin_addr.s_addr = INADDR_ANY; memser(&(addr.sin_zero), '\0', 8); if (bind(serverSocket, (struct sockaddr *)&addr, sizeof(struct sockaddr_in)) == -1){ printf("Ocorreu um erro ao chamar bind()!\n"); exit(1); } if (listen(serverSocket, MAX) == -1){ printf("Ocorreu um erro ao chamar listen()!\n"); exit(1); } printf("Aguardando conexao...\n"); socket = accept(serverSocket, NULL, NULL); if (socket == -1){ printf("Ocorreu um erro ao chamar accept()!\n"); exit(1); } printf("Conectado!\n"); printf("Recebendo dados...\n"); length = recv(socket, (void *)buffer, BUFFER, MSG_WAITALL); printf("%d bytes foram recebidos:\n"); for (i = 0; i < BUFFER; i++) printf("%c", buffer[i]); printf("\n\n"); printf("Enviando resposta...\n"); sprintf(buffer, MSG); length = send(socket, buffer, strlen(buffer), MSG_OOB); printf("%d bytes foram enviados.\n", length); printf("Sucesso!"); close(socket); close(serverSocket); return 0; } e o erro: felipe@felipe:~/projetos/teste/C$ gcc teste.c -o teste teste.c: In function `main': teste.c:12: error: called object is not a function Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Janeiro 30, 2005 Denunciar Share Postado Janeiro 30, 2005 Veja esta linha: int serverSocket, socket, length, i;Você acaba de definir "socket" como um inteiro. Por isso é que deve estar aparecendo o erro. E, no outro código, você definia "socket" como um SOCKET, o que dá no mesmo problema: você está definindo uma variável com o nome de uma função. Experimente trocar esse nome.Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Guest Postado Janeiro 30, 2005 Denunciar Share Postado Janeiro 30, 2005 no linux funcionou trocar o nome, daqui a pouco vou reiniciar o pc no windows e testar...não tinha me dado conta desse pequeno detalhe ...valeu a ajuda! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fbafelipe Postado Janeiro 30, 2005 Denunciar Share Postado Janeiro 30, 2005 testei no windows e tb funcionou!!!mais uma vez valeu a ajuda!OBS: no outro post eu tinha esquecido de logar antes de postar... Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Heldinho
Bom pessoal, é o seguinte.. encontrei um tutorial sobre como programar Sockets que parecia ser bem fácil.. olhem:
Em ingles(Completo)
Em portugues(Menos coisas do que o ingles)
bom, até aí tudo bem.. acho que muitas pessoas procuram por isso.. mas tem um problema.. esses tutoriais são pra linux.. será que alguém conhece ou sabe fazer o que tem nesses tutoriais só q pra windows?
Bom.. Agradeço desde já..
Até +!!
Link para o comentário
Compartilhar em outros sites
9 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.