NelsonBN Posted May 16, 2008 at 04:38 PM Report Share #185504 Posted May 16, 2008 at 04:38 PM Primeiro queria pedir desculpa em ter colocado o meu tópico aqui... eu queria colocar em [VB]-Dúvidas e Ajudas mas la não tinha a versão do vb que eu uso.... a minha duvida é o seguinte... estou a usar o Visual Basic 2005 express e queria fazer um programa que envie informação para um outro programa que está em outro computador... ou seja, fazer um programa servidor(recebe informação) e um programa cliente (envia informação)... estive a pesquisar sobre isso e pelo que encontrei, a melhor maneira de fazer isso é com um componente chamo winsock, o problema é que eu não encontro esse componente no meu vb, alguém me pode ajudar... será que a versão que eu uso do vb não permite fazer isso?? existe alguma alternativa?? devo usar outra versão??? Link to comment Share on other sites More sharing options...
psiico Posted May 16, 2008 at 11:42 PM Report Share #185567 Posted May 16, 2008 at 11:42 PM não há winsock em VB 2005 Psiico // Portfolio Link to comment Share on other sites More sharing options...
José Lopes Posted May 16, 2008 at 11:44 PM Report Share #185568 Posted May 16, 2008 at 11:44 PM Em tempos estive com uma cena dessas quase feita...aliás. entre 3 máquinas já se conseguia manter uma conversação...a ideia era quase fazer um messenger...com bonequinhos com estados e essas tretas todas, ip's dinâmicos, mensagens offline, etc , num ambiente com 200 utilizadores e controlado por uma BD Oracle.... mas entretanto fiquei sem ajuda...e sozinho...não tive tempo para voltar a pegar..... eu desenvolvi com o com sockets Este exemplo é feito em TCP, mas tb podes usar UDP.... a única diferença é que, se não estou errado..o UDP não dá feedback.. é só de difusão... com o tcp...se a coisa correr mal...ficas a saber do lado de cá ! (explicação minimalista!) Imports System.Net.Sockets Outra coisa que também é importante...é correres isto em thread's... para o listener estar sempre à escuta... Ex: Criação do Servidor (Receptor) Criação da thread que apela à criação do listener Public Sub start_server_receive() Try t = New System.Threading.Thread(AddressOf Me.StartListener) t.Name = "listener" t.Start() Catch Exit Sub End Try End Sub Criação do Servidor: Private Sub StartListener() Try tcplistener = New TcpListener(5000) tcplistener.Start() Catch ex As Exception 'tratamento da excepção End Try Do Try Dim tcp_client As System.Net.Sockets.TcpClient = tcplistener.AcceptTcpClient() Dim networkStream As System.Net.Sockets.NetworkStream = tcp_client.GetStream() Dim bytes(tcp_client.ReceiveBufferSize) As Byte networkStream.Read(bytes, 0, CInt(tcp_client.ReceiveBufferSize)) Dim clientdata As String = Encoding.ASCII.GetString(bytes) '^Recebe uma string (por exemplo um comando) 'aqui faz-se o tratamento da string 'Se for para receber ficheiros por o tratamento e feito de maneira diferente Catch ex As Exception Exit Do End Try Loop End Sub Ok... agora já tens uma máquina à escuta na porta - podes confirmar em linha de comandos: netstat -a ...quanto ao cliente...só é criado quando queres enviar: Public Function Send_Stream_Text( ByVal f As String) As Boolean Dim tcpClient As New TcpClient Try tcpClient.Connect(ipdestino,porta) Catch ex As Exception MsgBox("Erro ao ligar! " & vbNewLine & ex.Message) Exit Sub End Try Dim networkStream As Net.Sockets.NetworkStream = tcpclient.GetStream() If networkStream.CanWrite And networkStream.CanRead Then Try Dim sendBytes As [byte]() = Encoding.ASCII.GetBytes(f) tcpclient.SendBufferSize = sendBytes.Length networkStream.Write(sendBytes, 0, sendBytes.Length) Return True Catch ex As Exception Return False End Try End If End Function Penso que seria isto que querias... isto é do mais simples que me parece poder ser feito... depois é só uma questão de ajeitares a teu gosto..e adicionares a complexidade que precisares. O sistema de envio de ficheiros...nunca chegamos a concluir...porque perdíamos aí uns bytes pelo caminho... mas esteve quase lá...talvez um dia este projecto ainda seja retomado!! Qq dúvida... "apita" Encontei ainda este expleo..pode ser que ajude: http://www.freevbcode.com/ShowCode.asp?ID=7557 PS. código escrito com uma grande ajuda do meu grande amigo Ricardo Neves!!! Quando te pedirem peixe.... ensina-os a Pescar!!Hum..lálálálá!! Link to comment Share on other sites More sharing options...
NelsonBN Posted May 28, 2008 at 02:19 AM Author Report Share #187961 Posted May 28, 2008 at 02:19 AM bem eu e o um amigo meu encontramos um winsock que aparentemente funciona no Visual Basic 2005 express. É o Winsock Orcas.dll, só tive de o adicionar ao meu vb e pronto... Já consigo fazer conexão entre servidor e cliente. Mas quando tentei enviar uma simples mensagem do cliente para o servidor, nada feito. O meu amigo disse que antes tinha dar dar permissão ao cliente. tentei fazer e nada... para aceitar a conexão do cliente usei o seguinte (este código é no servidor): Private Sub winsock1_ConnectionRequest(ByVal sender As Object, ByVal e As Winsock_Orcas.WinsockConnectionRequestEventArgs) Handles winsock1.ConnectionRequest winsock1.Accept(e.Client) End Sub o evento que serve para receber mensagens, não é winsock1_DataArrival?? e no cliente para mandar mensagens?? não é winsock1.Send("teste")?? alguém me sabe responder??? Link to comment Share on other sites More sharing options...
psiico Posted May 28, 2008 at 07:48 AM Report Share #187968 Posted May 28, 2008 at 07:48 AM sim é no data arrival, defines o q vem numa variavel e mostras a variavel. 'isto provem de um código que eu tenho de vb 6 que faz de chat. Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) Dim DATA As String Winsock1.GetData DATA Text1.Text = Text1.Text & vbCrLf & DATA End Sub depois s quiseres deixo-t todo o código referente ao winsock Psiico // Portfolio Link to comment Share on other sites More sharing options...
NelsonBN Posted May 29, 2008 at 02:37 PM Author Report Share #188335 Posted May 29, 2008 at 02:37 PM bem.... pessoal obrigado pela ajuda que me deram... já resolvi o meu problema.... instalei o vb 2008 express e utilizei a dll "Winsock Orcas.dl". Foi só adicionar essa dll ao meu projecto e usar normalmente. Link to comment Share on other sites More sharing options...
Asgorath Posted May 29, 2008 at 03:42 PM Report Share #188354 Posted May 29, 2008 at 03:42 PM NelsonBN, o código dados José Lopes não funciona? "The Dark Side Clouds Everthing. Impossible To See The Future Is."My rig: Intel Core 2 Quad Q9450 | abit IP35P | 4G Kingston 800 Mhz | XFX GeForce 9800 GX2 1G ddr3 | 2X WD5000AAJS 500Gb Sata 2 | PSU 600W || Caixa El-Diablo | Creative XMod Link to comment Share on other sites More sharing options...
GnGs Posted October 26, 2009 at 12:33 PM Report Share #293395 Posted October 26, 2009 at 12:33 PM Eu criei um mini chat mas so consegue aceder um cliente 😛 como resolvo? Winsock Orcas Link to comment Share on other sites More sharing options...
Gooden Posted October 26, 2009 at 02:10 PM Report Share #293404 Posted October 26, 2009 at 02:10 PM Só uma pergunta muitooooo querida............ porque raio usas winsocks? o.0 okok nevermind xD usa tcpclient muito mais fácil :| ai vou eu fazer outro tutorial xD Link to comment Share on other sites More sharing options...
dio123 Posted October 27, 2012 at 12:16 AM Report Share #480640 Posted October 27, 2012 at 12:16 AM Boa noite, ando aqui a fazer um programa cliente- servidor para troca de informaçao entre si. Com exemplos da net consegui ver o ambiente trabalho do servidor. Depois de alguns testes reparei que não consigo aceder externamente com o programa cliente. Coloquei o ip externo e no router tenho a porta aberta mas da sempre erro ns ligaçao. Agora se for com ipinterno da mesma rede funciona Exprimentei tambem o codigo do.jose lopes postou e tenho o mesmo problema. Alguem sabe porque? Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now