• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

mcanossa

[VB6] - Enviar dados pela net atarvés do IP

17 mensagens neste tópico

:wallbash:

Alguém me sabe indicar como é que posso, com Visual Basic 6, enviar dados pela net, através do IP (para um computador com um certo IP)? ou receber dados da net, de um computador com um determinado IP?

Obrigado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
winsocks, é sobre isso que tens de 'investigar'. Eu não sei bem nisso, mas já te aparece por aqui alguem que te esplica tudo. ;)
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ora bem tb te aconcelho a pesquisares soubre Winsock's e soubre os protocolos (TCP...UDP...etc)

É relativamente facil trocar informação pela internet entre 2 programas. Vou tentar explicar-te como podes fazer um programa mt simples.

Comecemos pela parte servidor:

Primeiro abres o novo projecto e adicionar o Componente Winsock(vais a Compentes e procuras por "Microsoft Winsock ontrol 6.0"

Em seguida adicionas uma winsok ao teu projeto e omeemos com o código.

Nos eventos "Winsock1_Close" e "Winsock1_Error" metes as seguintes linhas de código

Winsock1.Close
Winsock1.Listen
ficando algu do genero :
Private Sub Winsock1_Close()
Winsock1.Close
Winsock1.Listen
End Sub

Private Sub Winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
Winsock1.Close
Winsock1.Listen
End Sub

Istu serve para no caso de ocorrer um erro na ligação ou quando programa client é fechado, o servidor fechar a

ligação e abrila outra vez para continuar a aceitar conecções, pois se não tivesses estas linhas ao te desconectares a primeira vez, se te tentasses

conectar outra vez n irias conssegui pois a ligação era terminada e não era restabelecida.

Em seguida vamos abrir uma porta por onde vamos fazer a comonicação.

O evento Form_Load da Form fica assim:

Private Sub Form_Load()
Winsock1.LocalPort = 4545 ' Aqui Defines a Porta que queres que seja aberta.
                          'Se não me engano pode ir de 1 a 32mil e kk coisa,
                          'atenção que eu axo que no windows XP da porta 1 ate a 1024
                          'estao "Guardadas" para o sistema, o que n quer dizer que não
                          'as possas utilizar.

Winsock1.Listen ' Aqui Abrimos a porta acima definida. Caso ocorra um erro do tipo
                '"Adress in Use" é porque essa porta ja esta a ser utilizado por outro programa.

End Sub

Agora no Evento "Winsock1_ConnectionRequest" da winsock metemos

Winsock1.Close' Para não aceitar mais conecções
Winsock1.Accept requestID ' Para aceitar o pedido de conecção

fica algo do tipo :

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
Winsock1.Close
Winsock1.Accept requestID
End Sub

Em seguida vamos tratar de receber a informação, o evento enarregue desta função é o "DataArrival"

onde iremos meter as seguintes linhas de código :

Dim strData As String
Winsock1.GetData strData           ' Metemos a informação recebida pela winsock na variavel strData
List1.AddItem "Client " & strData  

Agora como servidor não precisa apenas de reeber informação vamos fazer a parte de enviar informação.

Adiciona-se um CommandButon(Command1) e metemos as seguintes linhas de código no evento Click:

List1.AddItem "Servidor " & Text1.Text
If Winsock1.State = sckConnected Then ' Se esta onectado entao envia dados
    Winsock1.SendData Text1.Text
End If

E o mecanismo principal da parte servidor esta explicada. Vamos ao cliente.

O client é ainda mais fácil.

Adiciona-se outra form ao projecto....e como anteriormente adiciona-se uma winsock

Para começar precisamos de nos conectar ao servidor, para istu criamos um CommandButon(Command1) e uma TextBox(Text2)e no evento click do Command1 metemos:

If Command1.Caption = "Conectar" Then
    Winsock1.Connect Text2.Text, 4545 'conecta-se ao IP que esta na textbox e a porta predefinida
    Command1.Caption = "Disconetar"
    Else			      ' caso se carregue no butao e ja exista uma conecção feita ele desconecta
        Command1.Caption = "Conectar"
        Winsock1.Close			
End If

Para recebermos dados apenas temos de copiar o evento "DataArrival" do servidor para o client no que

diz respeito á winsock. Para enviarmos os dados

Para enviar Dados tambem é o mm código. Adiciona-se um CommandButon e no evento click as seguintes linhas de código:

List1.AddItem "Servidor " & Text1.Text
If Winsock1.State = sckConnected Then ' Se esta onectado entao envia dados
    Winsock1.SendData Text1.Text
End If

Bem e axu que esta tudo o que diz respieto a parte de troca dedados, o resto do programa podes fazer o download no link que te deixo para veres o resto e perceberes melhor. Espero n te ter confundido mais ainda, e peço desculpa pela má organização da informação mas foi um bocado feito a preça :s

http://clientes.netvisao.pt/nb012788/Tranferencia_Dados.rar

cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:(

Muito obrigado pela vossa colaboração. Vou tentar perceber bem as soluções que me indicaram e tentar implementa-las.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes, qual é o problema de teres os programas em PC's diferentes? Se soberes o IP não há problema ;)

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

se for um simples som tipo,quando tens uma pergunta, basta pores na acção de dataArrival: beep se quisers um som tipo MSN, tens que usar o componente M$ Multimedia Control 6.0

e fazres: mmcontrol1.play ou a função que é...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

qualquer coisa tipo isto:

Private Sub Winsock2_DataArrival(ByVal bytesTotal As Long)
Dim DATA As String
Winsock2.GetData DATA
' Esta linha de codigo, pega no conteudo que chegou da outra maquina, e mete-a num Textbox, a funcao vbcrlf e' para fazer paragrafo (caso nao t lembres / saibas)
Text1.Text = Text1.Text & vbCrLf & DATA
' Aqui podes por para tocar o som, se quiseres um simples beep, poes:
beep
' Caso queiras o som:
With MMControl1
.Command = "Close"
.FileName = "destino para o ficheiro"
.Command = "Open"
.Command = "Play"
End With
End Sub

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

apenas para testar, eu meti:

Private Sub Command1_Click()
With MMControl1
.FileName = "c:\9_64B.WAV"
.Command = "Open"
.Command = "Play"
End With
End Sub

e deu erro

ajude por favor

quado eu acabar mew projeto eu mando pra vcs verem

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

por favor, teria como me disponibilizar um form com apenas um botão

e quando clicado ele toca o som "c:\9_64B.WAV" ???

(sem abrir o windows media player)

gradecid

edit:

jah consegui...

muito obrigado

agora e soh eu dah hide em algumas coisas

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora