seja bem vindo ao forum eof, caso nao seja cadastrado se cadastre para poder visualizar todo o conteudo ^^

Participe do fórum, é rápido e fácil

seja bem vindo ao forum eof, caso nao seja cadastrado se cadastre para poder visualizar todo o conteudo ^^
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Você não está conectado. Conecte-se ou registre-se

[tutorial] socket em c - linux

Ir para baixo  Mensagem [Página 1 de 1]

1[tutorial] socket em c - linux Empty [tutorial] socket em c - linux Ter Dez 11, 2012 12:34 pm

Kodo no Kami

Kodo no Kami
master
master

bom galera hj eu resolvi ligar o back track para brincar um pouco com ele entao vou fazer esse tutorial de socket em linux porem eu nao vou abordar todo o assunto ja q e o mesmo de socket em windows so vou mostrar a diferença entre eles, para começar agente usa no windows a biblioteca winsock2.h no linux agente vai usar sys/socket.h

Código:
#include <sys/socket.h>

int main(void)
{
}

no meu exemplo eu vou criar um servidor basico entao vamos ter q criar 3 variaveis do tipo int, um string, e duas estrutura do tipo sockaddr_int, essa estrutura esta em outra biblioteca q e netdb.h

Código:
#include <sys/socket.h>
#include <netdb.h>

int main(void)
{
   int sock1, sock2, tam;
   char fts[1000];
   struct sockaddr_in local, remoto;
}

no windows agente tem q iniciar o serviço wsa ja no linux nao e necessario tambem nao e necessario linkar com o lib wsock32, vamos criar o socket

Código:
#include <sys/socket.h>
#include <netdb.h>

int main(void)
{
   int sock1, sock2, tam;
   char fts[1000];
   struct sockaddr_in local, remoto;

   sock1 = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
}

agora agente atribui o endereço, porta e familia para a estrutura

Código:
#include <sys/socket.h>
#include <netdb.h>

int main(void)
{
   int sock1, sock2, tam;
   char fts[1000];
   struct sockaddr_in local, remoto;

   sock1 = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

   local.sin_family = AF_INET;
   local.sin_addr.s_addr = INADDR_ANY;
   local.sin_port = htons(315);
}

agora usamos a funçao bind, listen e accept para aceitar a conexao

Código:
#include <sys/socket.h>
#include <netdb.h>

int main(void)
{
   int sock1, sock2, tam;
   char fts[1000];
   struct sockaddr_in local, remoto;

   sock1 = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

   local.sin_family = AF_INET;
   local.sin_addr.s_addr = INADDR_ANY;
   local.sin_port = htons(315);

   bind(sock1,(struct sockaddr *)&local,sizeof(local));
   listen(sock1,1);
   
   sock2 = accept(sock1,(struct sockaddr *)&remoto,&tam);
}

para terminar usamos a funçao recv para receber as informaçao depois so agente conectar pelo telnet (uma pequena observaçao no telnet do windows ele manda caracacter por caracter ja no linux ele envia so quando aperta enter), tambem usamos close para fechar a conexao

Código:
#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <netdb.h>

int main(void)
{
   int sock1, sock2, tam;
   char fts[1000];
   struct sockaddr_in local, remoto;

   sock1 = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

   local.sin_family = AF_INET;
   local.sin_addr.s_addr = INADDR_ANY;
   local.sin_port = htons(315);

   bind(sock1,(struct sockaddr *)&local,sizeof(local));
   listen(sock1,1);
   
   sock2 = accept(sock1,(struct sockaddr *)&remoto,&tam);

   while(1)
   {
      recv(sock2,fts,strlen(fts),0);
      printf("%s",fts);
   }
   close(sock1);
}

by hacker fts315

https://endoffile.umforum.net

Ir para o topo  Mensagem [Página 1 de 1]

Permissões neste sub-fórum
Não podes responder a tópicos