Socket em C/C++ - SERVER

Publicado por Krownix 24/11/2005

[ Hits: 12.387 ]

Download server.cpp




Este é o server, que também demonstra o funcionamento da winsock2.h, este programa fica aguardando uma conexão e quando conectado recebe string pela rede.

  



Esconder código-fonte

#include<iostream>
#include<stdlib.h>
#include<winsock2.h>

using namespace std;

int main(void) {
    int Tamsockaddr;
    char str_rec[60], str_env[60];
    
    WSADATA WsData;
    if(WSAStartup(MAKEWORD(2,0), &WsData)!=0) { cout << "Erro ao iniciar DLL" << "\n"; exit(1); }

    struct sockaddr_in local, s_recv;
    
    SOCKET Ouvir; //aguardar a conexao
    Ouvir=socket(AF_INET, SOCK_STREAM, 0);
    if(Ouvir<0) { cout << "Erro criaçao do socket" << "\n"; exit(1); }
     
    local.sin_family=AF_INET;
    local.sin_port=htons(1024);
    local.sin_addr.s_addr=INADDR_ANY;
    memset(&local.sin_zero,0x00,8);
      
    if(bind(Ouvir,(struct sockaddr *)&local,sizeof(local))!=0) { cout << "Erro bind()" << "\n"; exit(1); } //prepara socket para aguardar conexao
    
    Tamsockaddr=sizeof(sockaddr);
    
    if(listen(Ouvir,1)!=0) { cout << "Erro listen()" << "\n"; exit(1); } //aguarda conexao
    
    SOCKET Recv; //recebe dados
        
    Recv=accept(Ouvir,(struct sockaddr *)&s_recv, &Tamsockaddr);
    if(Recv<0) { cout << "Erro ao receber conexao" << "\n"; exit(1); }
    else { cout << "\n" << "Conexao vinda de:" << "\n" << "Maquina.: " << inet_ntoa(s_recv.sin_addr) << "\n" << "Porta.: " << ntohs(s_recv.sin_port) << "\n"; }
    
    cout << "\n\n";
    while(recv(Recv, str_rec, sizeof(str_rec),0)) { cout << "\n" << "-" << str_rec << "\n"; }
    
    closesocket(Recv); closesocket(Ouvir);
    WSACleanup();
}
                     
                     
        






    

Scripts recomendados

Programa em C para monitorar IPs e portas ativas

Mostrar IP em C#

Cliente em C via UDP

Socket em C/C++ - CLIENT

Exemplo de daemon em C


  

Comentários
[1] Comentário enviado por caiovinic em 25/11/2005 - 00:07h

este aceita mais de um cliente acessando o servidor ao mesmo tempo?!

[2] Comentário enviado por krownix em 25/11/2005 - 15:23h

Sim, aceita ... no comando abaixo eu especifico qntas conexões este socket irá suportar:

listen(Ouvir,1)

- O número 1 diz que o socket Ouvir aceita somente uma conexão, é so alterar o número passado como argumento para a função listen que vc altera o número de conexões permitidas.

Falow!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts