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

xlo620

[VB2005] ligaçao servidor/cliente & cliente/servidor

21 mensagens neste tópico

boas. a minha duvida é a seguinte, prentendo fazer ligaçao entre uma aplicaçao(cliente) com outra aplicaçao(servidor). ja vi varios tutoriais na net e aqui no forum e nao consegui esclarer a minha duvida... sei q é cm o system.net.sockets mas n tou a conseguir  :confused: se alguem m puder ajudar :D

a minha ideia é fazer algo tipo isto mas em vb2005 :Dhttp://www.macoratti.net/vb_rmt1.htm

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pois é como eu :confused: mas no forum não encontrei nada disso...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pois é como eu :confused: mas no forum não encontrei nada disso...

pois ainda bem q nao sou o unico :D still waiting...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

saca o 101 vb.net samples projects para vb.net 2003 do site da ms , ha um exemplo chamado VB.NET - Advanced .NET Framework (Networking) - Use Sockets

Tambem ha 101 vb.net samples para vb.net 2005, tambem vale a pena fazer download e o codigo esta bem comentado.

Depois dentro do vs.net 2005  convertes para vb.net 2005, os projectos do 2003.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

consegui. deixo aqui o codigo:

CLIENTE:

     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnligar.Click
        Dim porta As String = portbox.Text
        Dim ipdns As String = ipbox.Text

        Dim tcpClient As New System.Net.Sockets.TcpClient()

        statusbox.Text = ("Connecting.")


        tcpClient.Connect(ipdns, porta)

        Dim networkStream As NetworkStream = tcpClient.GetStream()


        If networkStream.CanWrite And networkStream.CanRead Then

            ' executa apenas uma escrita

            Dim sendBytes As [byte]() = Encoding.ASCII.GetBytes("Connected ? ")

            networkStream.Write(sendBytes, 0, sendBytes.Length)


            ' Le o NetworkStream em um buffer

            Dim bytes(tcpClient.ReceiveBufferSize) As Byte

            networkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize))


            ' exibe os dados recebidos do host no console

            Dim returndata As String = Encoding.ASCII.GetString(bytes)

            statusbox.Text = (("" + returndata))

        Else

            If Not networkStream.CanRead Then

                statusbox.Text = ("Stream error.")

                tcpClient.Close()

            Else

                If Not networkStream.CanWrite Then

                    statusbox.Text = ("Can't read this stream")

                    tcpClient.Close()

                End If

            End If

        End If

    End Sub

SERVIDOR:

Imports System.Net.Sockets

Imports System.Text
Imports System.IO.Ports
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'abrir a porta
        Const numeroPorta As Integer = 8080
        Dim tcpListener As New TcpListener(numeroPorta)
        tcpListener.Start()
        estadobox.Text = ("Waiting for connection...")

        'aceita ligaçao
        Dim tcpClient As TcpClient = tcpListener.AcceptTcpClient()
        estadobox.Text = ("Connection accepted.")

        'aceita o stream
        Dim networkStream As NetworkStream = tcpClient.GetStream()

        'le o stream
        Dim bytes(tcpClient.ReceiveBufferSize) As Byte
        networkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize))

        'dados recebidos
        Dim clientdata As String = Encoding.ASCII.GetString(bytes)
        estadobox.Text = (("" + clientdata))


        Dim responseString As String = "Connected"
        Dim sendBytes As [byte]() = Encoding.ASCII.GetBytes(responseString)
        networkStream.Write(sendBytes, 0, sendBytes.Length)

        'comandos



    End Sub

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tens a certeza que o codigo ta bem? tentei no meu e da uma data de erros...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tens a certeza que o codigo ta bem? tentei no meu e da uma data de erros...

codigo actualizado :P
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

nao consegues por o projecto num rar e upares pa um site e disponiblizares isso? e ja agora no code de cleinte nao faltara algo deste genero antes?:

Imports System.Net.Sockets

Imports System.Text

Imports System.IO.Ports

? se tas a copiar copia mesmo tudo com o class fom e isso :S mas tenta upar isso sff XD

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

isso eu ja tinha queria era o projecto inteiro é que isso vem ja com cenas criadas e umas certas coisas definidas se poderes enviar o projecto inteiro agradecia se nao deixa estar xD

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

isso e facil de alterar  :hmm: ja tenho mtas mais cenas e nao sei se publico o codigo :/ mas diz o q queres ssaber q eu ajudo-te.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Como é que posso no servidor e no cliente colocar em modo de espera de mensagem? Eu queria que fosse possível enviar duas mensagem seguidas sem ser necessário obter resposta do outro lado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ao longo da minha pesquisa até ver o teu tópico, encontrei vários exemplos que usam o winsock 6.0, dai ter perguntado por esse ocx.;)

Obrigado pela resposta. Vou experimentar.  :confused:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ao longo da minha pesquisa até ver o teu tópico, encontrei vários exemplos que usam o winsock 6.0, dai ter perguntado por esse ocx.;)

Obrigado pela resposta. Vou experimentar.  :confused:

Estou neste momento a dar uns últimos toques na aplicação que estou a desenvolver há cerca de 2 meses. usei esse exemplo como base e até agora estou muito satisfeito. Faz tudo o que eu pretendo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boa tarde,

o exemplo que o xlo620 postou não consigo por a funcionar por ip externo.

ipdns = 12.345.678.890 erro de nao consigo comunicar tcpClient.Connect(ipdns, porta)

Se colocar ip interno 192.168.1.2, funciona.

Tou mesmo a rasca em fazer um programa que comunique com outro programa atraves de ip externos. As portas estão a funcionar testei com um trojan no virtual pc.

Usei as portas do css e utorrent e tenho o mesmo erro,

Editado por dio123
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