Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

11closed

Receber dados pela porta usando Winsock

Recommended Posts

Boa tarde!
Estou com uma duvida no vb6
é possível eu apenas receber dados de um respectivo IP e Porta usando o Winsock?
Att,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui resolver aqui!

Primeiro criei um formulário e adicionei o componente Winsock

E apenas fiz como teste o código abaixo

Private Sub Form_Load()
Winsock.Connect "IP que vai enviar os dados", Porta que receberá os dados
End Sub
Private Sub sck_DataArrival(ByVal bytesTotal As Long)
Dim dados As String 'variável que irá receber os dados

Winsock.GetData dados, vbString 'dados recebe tipo string
End Sub

Muito simples!

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por alecardoso
      Pessoal, bom dia
      Estou com um problema sério e não consigo resolver , preciso de ajuda.
      Tenho um servidor de arquivos rodando SAMBA e Windows 10 nas estações. Toda vez que o usuário desliga a maquina e liga de novo o mapeamento de rede fica desconectado. Não adianta o usuário nem clicar em cima pois ele não pede a senha novamente pra se autenticar. Tem que excluir o mapeamento e mapear de novo.
      Abaixo segue as configurações do arquivo. smb.conf do meu servidor. Será que tem como corrigir esse problema ? Obrigado
       
      [global] netbios name = linuxarquivos server string = linuxarquivos workgroup = SILCAR local master = yes os level = 100 preferred master = yes wins support = yes dns proxy = no security = user hosts allow = ALL log file = /var/log/samba.%m max log size = 50 read only = no [Arquivos] path = /mnt/arquivos writable = yes browseable = yes force create mode = 0777 force directory mode = 0777 create mode = 0777 directory mode = 0777 valid users = @arquivos force group = arquivos [RH] path = /mnt/arquivos/RH writable = yes browseable = yes force create mode = 0777 force directory mode = 0777 create mode = 0777 directory mode = 0777 valid users = @rh force group = rh [Contabilidade] path = /mnt/arquivos/Contabil writable = yes browseable = yes force create mode = 0777 force directory mode = 0777 create mode = 0777 directory mode = 0777 valid users = @contabilidade force group = contabilidade [Financeiro] path = /mnt/arquivos/Financeiro writable = yes browseable = yes force create mode = 0777 force directory mode = 0777 create mode = 0777 directory mode = 0777 valid users = @financeiro force group = financeiro [OBB] path = /mnt/OBB writable = yes browseable = yes force create mode = 0777 force directory mode = 0777 create mode = 0777 directory mode = 0777 valid users = @obb force group = obb [Credito] path = /mnt/arquivos/Credito writable = yes browseable = yes force create mode = 0777 force directory mode = 0777 create mode = 0777 directory mode = 0777 valid users = @credito force group = credito [TI] force create mode = 0777 create mode = 0777 path = /mnt/arquivos/TI force directory mode = 0777 directory mode = 0777 [Garantia] create mode = 777 path = /mnt/arquivos/Garantia force directory mode = 777 force group = garantia directory mode = 777 writable = yes [Compras] create mode = 777 path = /mnt/arquivos/Compras directory mode = 777  
    • Por WEBCHARLES
      Blz galera, estou com uma grande dificuldade com JAVASCRIPT, estou tendo problema com meu PHP para retornar o IP com função $_SERVER['REMOTE_ADDR']; mas esta, me retorna apenas o gateway da nossa rede, acreditamos que seja algum problema interno. Daí recorri ao javascript abaixo, que está me retornando o ip publico e para mim, já ajuda bastante. 
      O que eu gostaria é o seguinte, a partir desse ip que está sendo mostrado pelo javascript, fazer um alert redirecionando se os 10 primeiros algarismos forem diferentes de 200.254.21 sair da pagina.
       
      Não sei trabalhar com if no javascript. Alguém pode me ajudar?
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script type="application/javascript" src="https://api.ipify.org?format=jsonp&callback=getIP"></script> <script type="application/javascript"> $(function() { $.getJSON("https://api.ipify.org?format=jsonp&callback=?", function(json) { document.write("Meu IP público é: ", json.ip); } ); }); </script>
    • Por L.Lazari
      Saudações! 
      Tenho uma ideia de um aplicativo para celular, uma rede social, que habita na minha cabeça faz algum tempo e até então não tive o atrevimento de colocá-la para funcionar.
      Sem entrar em detalhes antes da hora (obviamente), a minha ideia mescla elementos de algumas redes sociais já existentes e acaba por tornar-se algo novo. O ponto principal desta ideia é permitir que pessoas que normalmente estariam desconexas possam interagir de forma mais fácil, pois com as redes já existentes, mesmo que haja a sensação de que as pessoas estão conectadas com todos a sua volta, é difícil de interagir com outras pessoas fora do seu circulo social, mesmo que haja uma conexão real, as vezes, ela não é aparente ou direta o suficiente.
      Portanto, estou a procura de pessoas que gostariam de desenvolver algo novo, como isto que estou propondo, e dividir todos os lucros igualmente. 
      O problema:  não tenho experiência com o desenvolvimento de aplicativos, isto é, com a linguagem de programação necessária para tal. Devido à minha linha de pesquisa (está no meu perfil tudo o que faço atualmente) utilizo muito Python e Shell (muito R também), e programo com eles faz um bom tempo, então tenho noção de programação e consigo aprender sem dificuldades outras linguagens (o que já estou fazendo no tempo livre). Estou a procura de pessoas que possam tomar a linha de frente nessa questão.
      Não tenho prazos ou exigências, o que eu tenho é apenas a ideia, o corpo, do projeto bem estruturada.
      Em suma: proponho aqui uma parceria, onde eu ofereço não só a ideia, mas também comprometimento em estudar e solucionar quaisquer problemas que possam surgir durante o desenvolvimento, e procuro pessoas que estejam dispostas a tocar este projeto no tempo que der (ponto importante, pois tenho um projeto de mestrado e não posso dar dedicação exclusiva, naturalmente, acredito que boa parte das pessoas que lerão isto também trabalham em algo, então eu vejo isso que estou propondo mais como um projeto de fundo de garagem, uma ideia a ser desenvolvida a parte no tempo que der).
      Não da pra afirmar se é uma ideia boa ou não, quem tem o poder para decidir essas coisas serão sempre os usuários do aplicativo, mas gostaria de tentar e ver o que o futuro reserva! (de forma clara o que eu queria mesmo é ver se da para ter um bom retorno financeiro disso tudo). 
      Obrigado pela atenção e pelo tempo!
       
      Atenciosamente.
       
    • Por VIEGAS1969
      Boa noite a todos.
       
      Estou tentando resolver um problema com a minha internet que consiste no seguinte:
      Minha internet é da OI VELOX, que de VELOX só tem o nome, utilizo o modem homologado pela Velox SAGEMCOM 2704N e como a VELOX como se não bastasse, a cerca de 1 mês atrás diminuiu de 2 Mega para apenas 1 Mega alegando não haver mais viabilidade de oferecer os 2 Mega contratados.
      Decidi então comprar o modem TP-LINK TL-WR 840N, eu gostaria de utilizar o modem TP-LINK como receptor direto da internet sendo que terei que continuar utilizando o da SAGEMCOM, pois como todos sabem a VELOX com toda a tecnologia de hoje ainda distribui o sinal de banda larga através do fio do telefone.
                                                                                        
      Resumindo quero e tenho que usar o modem SAGEMCOM, mas desejo usá-lo como um tipo de secundário ou coisa parecida e colocar o da TP-LINK como o principal para executar tarefas como configuração de canal, mudança de senha de acesso a rede, habilitar ou não wifi, etc...
       
      Alguém poderia me informar como proceder nas conexões dos cabos e como habilitar o modem da TP-LINK como descrevi?
       
      Desde já agradeço a atenção e qualquer ajuda para o problema.
    • Por willianvaneli
      Preciso enviar struct via winsock de um cliente em C para servidor em Python.
       
      to apanhando muito e já fiz diversas mudanças porém não consegui acertar. Resumindo estou completamente perdido.
      Fiz um cliente que salvava todas informações da estrutura em uma unica string e enviava .... deu tudo certo ... porém quando tento enviar a estrutura tudo cai em ruínas =õ(

      cliente em C:
       
      #include <stdio.h>
      #include <winsock.h>
      #include <conio.h>
      #include <windows.h>
      #include <string.h>
      //ESTRUTURA QUE CONTEM OS DADOS PARA ENVIAR PARA O SERVIDOR
      typedef struct Dados {
          int idMensagem;
          int umidade;
          int temperatura;
          char data[128];
          char confirmacao[2];
      }TDados,*PDados;

      //FUNCAO QUE GERA DADOS A SEREM ENVIADOS PARA O SERVIDOR
      TDados gera_dados(TDados dados){
          srand(time(NULL));
          dados.idMensagem++;
          dados.umidade=30+(rand() % 60);
          dados.temperatura=(rand() % 100)-50;
          strcpy(dados.confirmacao,"");
          /** Gera a data e hora atual:*/
          time(&dados.data);
          strftime(dados.data,sizeof(dados.data), "%H:%M:%S %A %d %b %Y \n", localtime(&dados.data));
          printf(dados.data);
          /*strcpy(dados.date,"Data: ");
          strcat(dados.date,__DATE__);
          strcat(dados.date," - Hora: ");
          strcat(dados.date,__TIME__);*/
          return dados;
      }
      int main(int argc,char *argv[]) {    
          //DECLARANDO VARIAVEIS
          WSADATA data;
          SOCKET winsock;
          SOCKADDR_IN sock;
          char strDados[1024];
          int bytes;
          TDados dados;
          PDados pdados;
          dados.idMensagem=0;
          int idCliente=5;
          while(1){
              //INICIALIZANDO WINSOCK
              if(WSAStartup(MAKEWORD(1,1),&data)==SOCKET_ERROR){
                  printf("Erro ao inicializar o winsock");
                  return 0;
              }
              //CRIANDO SOCKET
              if((winsock = socket(AF_INET,SOCK_STREAM,0))==SOCKET_ERROR){
                  printf("Erro ao criar socket");
                  return 0;
              }
              //ESTRUTUDA DO SOCKET
              sock.sin_family=AF_INET;
              sock.sin_port=htons(5000);
              sock.sin_addr.s_addr=inet_addr("127.0.0.1");
              
              //GERANDO DADOS...
              printf("\n ------------GERANDO OS DADOS--------------- \n");
              dados=gera_dados(dados);
              //sprintf(strDados,"%d,%d,%d,%d,%s",idCliente,dados.idMensagem,dados.umidade,dados.temperatura,dados.date);
              //printf("\n ------------IMPRIMINDO OS DADOS--------------- \n");
              //printf(strDados);
              printf("\n --------------------------- \n");
              //CONEXAO COMO SERVIDOR, CASO NÃO SE CONECTE RETORNA ERRO
              if(connect(winsock,(SOCKADDR*)&sock,sizeof(sock))==SOCKET_ERROR){
                  printf("Erro ao se conectar");
                  return 0;
              }
              printf("Conectado!\n");    
              while(strcmp(dados.confirmacao,"ok")){
                  printf("Enviando Dados ao servidor!\n");
                  //ENVIANDO MENSAGEM
                  //char buffer[sizeof(Header)];(TDados*)
                  //memcpy(buffer, &header, sizeof(Header));
                  char* pdados= (PDados)malloc (sizeof(TDados)*1);   /// DEI MOLLOC PRA ENVIAR PELO WINSOCK
                  memcpy(pdados, &dados, sizeof(dados));               /// MEMCPY NEM SEI Q Q ISSO DIREITO USEI PQ MANDARAM
                  if(send(winsock,pdados,sizeof(dados),NULL) < 0){  /// ENVIANDO PELO WINSOCK
                      perror("Erro ao enviar a mensagem \n");
                      exit(1);
              }
                  //RECEBENDO CONFIRMACAO
                  printf("Recebendo resposta do servidor!\n");
                  memset(dados.confirmacao,0,2);
                  bytes=recv(winsock,dados.confirmacao,2,0);
                  if(bytes==-1){
                      printf("Conexão perdida");
                      getch();
                      return 0;
                  }else{
                      printf("\nMensagem Recebida %s \n",dados.confirmacao);
                  }
              }
              
              closesocket(winsock);
              //FAZ O PROGRAMA ESPERAR 30 SEGUNDOS PARA ENVIAR NOVA MENSAGEM
              Sleep(30000);
          }
          getch();
          closesocket(winsock);
          WSACleanup();
          return 0;
          
      }
       
      ------------------------------------------------------------------------------------------------------------------------------
      servidor em python ... NOTA : AINDA NÃO SEI RECEBER NA ESTRUTURA CORRETAMENTE.
       
      import base64
      # FUNCAO DE PERSISTENCIA
      def salvaLog(string):
          try:
              with open('log.txt','rt') as arq:
                  conteudo = arq.readlines()
                  if conteudo!="":
                      conteudo.append("\n")
                  conteudo.append(msg)
          except IOError:
              print('Arquivo não encontrado!')
          #~ arq=open('log.txt','rt',encoding="utf-8")
          #~ conteudo = arq.readlines()
          #~ if conteudo!="":
              #~ conteudo.append("\n")
              conteudo=msg
          arq=open('log.txt','wt',encoding="utf-8")
          arq.writelines(conteudo)
          arq.close()
      import struct
      idMensagem=0
      umidade=0
      temperatura=0
      data=b''
      confirmacao=b''

      import socket
      HOST = ''              # Endereco IP do Servidor
      PORT = 5000            # Porta que o Servidor esta
      tcp = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
      orig = (HOST, PORT)
      tcp.bind(orig)
      tcp.listen(5)
      while True:
          print ('Servidor Aberto\n')
          conexao, cliente = tcp.accept()
          print ('Conectado por', cliente)
          print ('Recebendo mensagem\n')
          msg = conexao.recv(142)
          print(len(msg))
          print (struct.calcsize('i i i 128s 2s'))
          print (msg)
          print(msg.decode())
          #~ msg= base64.decodebytes(msg)
          #~ print (msg)
          #~ print (msg.decode())
          cod = struct.unpack('i i i 128s 2s',msg)
          print (cod)
          (idMensagem,umidade,temperatura,data,confirmacao) = struct.unpack('i i i 128s 2s',msg)
          print ("Mensagem recebida, decodificando....\n")
          msg=msg.decode('UTF-8')
          print(msg)
          resposta='ok'
          conexao.send(resposta.encode())
          print ('\nSalvando em LOG as informacoes do cliente', cliente)
          salvaLog(msg)
          print ('\nFinalizando conexao do cliente', cliente)
          print("\n ----------------------------------------- \n")
          conexao.close()
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.