none
Como conectar dos computadoras usando Socket en vb 2010

All replies

  • pero es una aplicacion cliente y un servidor que tendra una base de datos, si la db es sql server, Oracle, mysql

    no requieres ningun socket ni nada extraño

    conectas la aplicacion directo por ado.net indicando en el connection string la ip o nombre de l pc que actua como servidor de base de datos

    has estudiado algo de ado.net ? cual es la db que debes usar ?

    lo pregunto porque si es lo que entoienedo sovket n es necesario usar para nada, porque ado.net lo resuleve por ti

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    Saturday, April 07, 2012 2:15 AM
  • Muchas gracias por responderme tan rápido Leandro, pura vida…

    No he estudiado nada de aod.net hasta ahora lo e escuchado, pero me interesa para investigar mas adelante…  Este es mi tercer cuatrimestre en la carrera, en el curso que estoy nos están pidiendo que todo sea por VB.net 2010 en Windows Form que es lo que estamos viendo, he estado viendo un poco SQL server pero por mi cuenta.

    Oye aun así pude conectar las computadoras hace poquito, lo que me faltaba en el Protocolo de Internet (TCP) era la Puerta de enlace predeterminada. Uuufffs  me costo y seguí viendo videos y tutórales hasta que vi esa configuración. Ahora lo que me falta es terminar de hacer la Base de Datos con todos los todos los requicitos y lo que no se es ver como hacer para importar los datos o mejor dicho la aplicación del servidor al cliente para modificarla jeje…

    Pura vida gracias…

     

    Aquí esta el código del Servidor que es para Aplicación de Consola:

    Imports System.Net.Sockets
    Imports System.Text
    
    Module TCPSrv
    
        Sub Main()
            'Hay que escuchar en el puerto correcto debe ser el mismo que el puerto del cliente se quiere conectar el.
            Const portNumber As Integer = 8000
            Dim tcpListener As New TcpListener(portNumber)
            tcpListener.Start()
            Console.WriteLine("Esperando conexión...")
            Try
                'Aceptar la conexión del cliente en espera y retorno 
                Dim tcpClient As TcpClient = tcpListener.AcceptTcpClient()
                Console.WriteLine("Conexión aceptada.")
                ' Get Obtener el flujo de
                Dim networkStream As NetworkStream = tcpClient.GetStream()
                ' Leer la secuencia en una matriz de bytes
                Dim bytes(tcpClient.ReceiveBufferSize) As Byte
                networkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize))
                ' Volver a los datos recibidos desde el cliente a la consola.
                Dim clientdata As String = Encoding.ASCII.GetString(bytes)
                Console.WriteLine(("El Cliente envió: " + clientdata))
                Dim responseString As String = "Conectado al servidor."
                Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes(responseString)
                networkStream.Write(sendBytes, 0, sendBytes.Length)
                Console.WriteLine(("Enviado Mensaje /> : " + responseString))
                'Cualquier comunicación con el cliente remoto utilizando el TcpClient puede ir aquí.
                'Cerrar y TcpListener TcpClient.
                tcpClient.Close()
                tcpListener.Stop()
                Console.WriteLine("Salir")
                Console.ReadLine()
            Catch e As Exception
                Console.WriteLine(e.ToString())
                Console.ReadLine()
            End Try
        End Sub
    
    End Module

     Este es el del Cliente:

    Imports System.Net.Sockets
    Imports System.Text
    
    Module TCPCli
    
        Sub Main()
            Dim tcpClient As New System.Net.Sockets.TcpClient()
            tcpClient.Connect("192.168.0.1", 8000)
            Dim networkStream As NetworkStream = tcpClient.GetStream()
            If networkStream.CanWrite And networkStream.CanRead Then
                'Es una escritura simple.
                Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes("Hay alguien ahí")
                networkStream.Write(sendBytes, 0, sendBytes.Length)
                'Leer el NetworkStream en un búfer de bytes.
                Dim bytes(tcpClient.ReceiveBufferSize) As Byte
                networkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize))
                'Salida de los datos recibidos desde el host a la consola.
                Dim returndata As String = Encoding.ASCII.GetString(bytes)
                Console.WriteLine(("Host retornado: " + returndata))
            Else
                If Not networkStream.CanRead Then
                    Console.WriteLine("No se puede ni escribir datos en esta corriente")
                    tcpClient.Close()
                Else
                    If Not networkStream.CanWrite Then
                        Console.WriteLine("No se pueden leer datos de esta corriente")
                        tcpClient.Close()
                    End If
                End If
            End If
            ' Pausa para que el usuario puede ver la salida de la consola
            Console.ReadLine()
        End Sub
    
    End Module

     


    Saturday, April 07, 2012 4:15 AM
  • bien

    pero alli solo veo que has creado un servidor y cliente comunicandose por socket

    donde deberia ir al logica de la db ? creo que vas a necesitar conocer ado.net para lograr conectarte con sql sever y poder ejecutar las instrucciones

    ADO.NET 

    Comandos y parámetros (ADO.NET)

    ADO.NET Parte 3 Actualización Información Sql Server

    ADO.NET - Parte 1 - Recuperar Información Sql Server

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    Saturday, April 07, 2012 1:22 PM
  • Es que ese código es solo para conectar las pc y mandar un mensaje, no me estaba conectando y ocupaba un ejemplo… Tengo 2 db una con los usuarios disponibles y otra con los artículos, con un usuario administrado para modificar las db; pero uno hace las modificaciones desde la compu cliente utilizando vb.net

    Ya hice una db pero me falta una y refinar el programa, para luego conectarlo que no se como hacerlo… me pregunto si se puede extraer el programa del servidor con ado.net

    Saturday, April 07, 2012 10:56 PM
  • Lo que ocupas son tramas.

    Si lo que ocupas es hacer un sistema cliente-servidor. Vas a necesitar configurar tramas para saber que es lo que el cliente esta solicitando y que es lo que el servidor debe hacer y/o responder.

    Ejemplo.

    1. L001,user01,pass01
    2. F001,dato1,dato2,dato3

    Esos facilmente podrian ser los datos que envia tu cliente desde diferentes ventanas. Si tu servidor conoce los codigos L001 y F001 facilmente podrías saber que es lo que el cliente esta solicitando y que es lo que el servidor debe responder u hacer.

    Atte.


    En este mundo hay sólo dos tragedias: una es no obtener lo que se quiere; la otra es obtenerlo. Esta última es la peor es una verdadera tragedia.

    Sunday, April 08, 2012 2:27 AM
  • Tengo 2 db una con los usuarios disponibles y otra con los artículos,

    como que tienes dos dbs, diras que tienes uan db con dos tabla,

    2 base de datos no tiene sentido

    Ya hice una db pero me falta una y refinar el programa, para luego conectarlo que no se como hacerlo… me pregunto si se puede extraer el programa del servidor con ado.net

    no queda para anda claro la arquitectura quer quieres lograr, la db imagino esta integrada al sql sever si es asi y esta todo en la misma red usando ado.net puede consultar directo a la db

    no necesitas de ningun socket o comunicacion, si defines en el connection string el ip o nombre de la pc remota puedes conectarte directo desde el cliente a la db que este en el servidor

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    Sunday, April 08, 2012 3:03 AM
  •  

    Dark_Fang yo nunca he trabajado con tramas, busque para ver que era pero esta un poco complicado jeje aun así lo buscare mas adelante… que buen pensamiento el que pusiste al final. Gracias

    U si no me fije tienes razón Leandro es solo una db con dos tablas; esta es la primera vez que estamos usando Base de datos y quien lo explico fue un compañero porque se lo pusieron como un trabajo y el no dijo nada que las db están integrada al sql sever, por eso me sonaba raro lo que me decías hasta que lo vi en otra parte para confirmarlo jeje muchas gracias por aclarármelo

     

    En fin el objetivo del proyecto es hacer una aplicación y luego asesar a ella por medio de red utilizando vb,net y como principal en Windows Form

    Una pregunta??? Yo puedo  en ado.net puedo asesar a esa aplicación para hacer la facturación mantenimiento

     

    Aquí dejo el programa si quieren echarle un vistazo, a por cierto me falta la parte de facturación…

    https://rapidshare.com/#!download|676p12|1200587893|Proyecto_04.rar|2121

    Gracias por las respuestas

     

    Sunday, April 08, 2012 4:56 AM
  • PonchoPC. El concepto de tramas es algo menos que complicado.

    Revisa tu codigo y verifica esto: "Hay Alguien Ahí". Si puedes enviar ese mensaje entonces puedes enviar cualquier mensaje de los que te puse, claro con tu propia información.

    Y tu servidor en la parte "Clientdata", sería capaz de recoger esa misma información, la cual podrias trabajar por separado.

    Ahora bien esto en caso de que efectivamente necesitas levantar un aplicativo cliente servidor.

    La otra idea es la que te plantea Leandro, es algo no menos complicado pero sí mucho mas eficiente.

    atte.


    En este mundo hay sólo dos tragedias: una es no obtener lo que se quiere; la otra es obtenerlo. Esta última es la peor es una verdadera tragedia.

    Sunday, April 08, 2012 5:33 AM
  • Una pregunta??? Yo puedo  en ado.net puedo asesar a esa aplicación para hacer la facturación mantenimiento

    claro porque no podrias

    solo crea las tablas de facturas y detalles y desde la aplciacion cliente directo te conectas a la db para trabajr con los datos, pero lo haces directo sin socket, de la aplciaicon cliente directo a la db que estaria en otro servidor de datos

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina


    Sunday, April 08, 2012 1:30 PM
  • Dark_Fang si claro puedo mandar mensajes pero lo que yo ocupo es acezar a la aplicación para que me tire el login seguido del menú… viéndolo así puede ser que tengo que hacer mas largo el programa del cliente para que comprenda los parámetros del servidor y que el mismo tenga el cuadro de login y todas las demás form que se necesitan para desplegarlos el mismo. Mmm pero podría ser. Gracias

     

     

    Leandro Tuttini mmm ya entonces hago la aplicación del cliente en ado.net para entrar al servidor y conectar la base de datos sabiendo cual tabla es la que ocupo, luego en el cliente hago la tabla de usuarios y artículos, junto con la factura, mmm será hacer eso porque no se como hacer que aparezca la formFactura del servidor al cliente. Bueno será estudiar ado.net… gracias por responder

     

     

    Bueno será juntar las dos formas con la Dark_Fang para mandar un parámetro para saber cuando se debe activar el msg del login, cuando debe importar la lista de usuarios con ado.net y así para cada opción…

     

     

    Otro caso jeje… Estuve revisando cosas y vi Cómo crear un servidor remoto mediante Visual Basic. NET en http://support.microsoft.com/kb/300951/EN-US pero no pude hacer que se depure el proyecto para crear el ensamblado ServerClass.dll por lo que no pude hacer la segunda parte que era Crear una aplicación de servidor remoto porque esta ocupa una referencia al ensamblado ServerClass.dll que se debe crear en la primera parte. También eso lo ocupo para Crear un cliente a un servidor remoto, como esta en http://support.microsoft.com/kb/300943/es Me pregunto si eso seria mejor aunque no me funciono...

     

    Gracias por las repuestas.

     

     

    Monday, April 09, 2012 1:16 AM
  • luego en el cliente hago la tabla de usuarios y artículos, junto con la factura

    esta parte no al entendi, en el cliente no haces ninguna tabla, la tabla ya esta en la db

    en el cliente simplemente consultas las tablas para tomar la informacion usnado para ello un SELECT que ejecutas mediante un SqlDataAdapter para cargar el datatable

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina


    Monday, April 09, 2012 2:32 AM
  • Ooo gracias por mensionarlo estoy en eso... Pura vida muy hamables en contestar. Gracias Saludos
    Monday, April 09, 2012 4:07 AM
  • Bueno gracias por la ayuda, ya entregue el trabajo aunque no logre terminarlo, no pude conectar el cliente a la base de datos del servidor. Aun así gracias por todo y pude comprender la relación en SQL Server, ADO.NET y VB.NET que no lo habían explicado en clases pero tengo que estudiarlo mas afondo…

    Pura vida y gracias por todo a los dos, me fueron de gran ayuda. Saludos

    • Proposed as answer by FSal Monday, December 03, 2012 7:53 PM
    • Unproposed as answer by FSal Monday, December 03, 2012 7:53 PM
    Wednesday, April 11, 2012 9:21 PM