Ir para conteúdo
Fórum Script Brasil
  • 0

Sockets Facin Em C++


Heldinho

Pergunta

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é +!! rolleyes.gif

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

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 resolver

se você portar essas libs para Windows................

agora........o GCC é um super compilador e o Linux é um super S.O..............

aconselho a testa-los...................

te+.................

Link para o comentário
Compartilhar em outros sites

  • 0

tenta no site da msdn: msdn

eu 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

Link para o comentário
Compartilhar em outros sites

  • 0
tenta no site da msdn: msdn

eu 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

Link para o comentário
Compartilhar em outros sites

  • 0

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...

Link para o comentário
Compartilhar em outros sites

  • 0

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

Link para o comentário
Compartilhar em outros sites

  • 0

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

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...