Jump to content

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


mcanossa

Recommended Posts

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

Link to comment
Share on other sites

  • 10 months later...

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
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.