border

Miembros:
Mensajes:
Temas:
Online:

Ultimo Miembro:

 
 

Cuenta Bancaria en EEUU
  #1 (permalink)  
Antiguo 15-08-2006, 05:09:18
Avatar de vbprog
Gran Participación en el Foro
 
Registrado: ago 2006
Posts: 216
vbprog Valoración +2
Predeterminado Pregunta socket facil creo?

haber Cliente:

Private Sub Command1_Click()
mensaje = Text1.Text
Winsock1.SendData mensaje
End Sub

Private Sub Command2_Click()
mensaje = Text1.Text
Winsock1.SendData mensaje
End Sub

Private Sub Form_Load()
Winsock1.RemotePort = "9797"
Winsock1.RemoteHost = "192.168.0.1"
Winsock1.Connect

End Sub

Servidor:

Private Sub Form_Load()
Winsock1.LocalPort = "9797"
Winsock1.Listen

End Sub

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

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim datos As String
Dim mensaje As String
Winsock1.GetData datos
MsgBox (datos)
End Sub


Si revisaron el codigo esto hace que uno ingrese un mensaje el caja de texto y el servidor revisa un msgbox de lo que envio el cliente en la caja de texto los 2 botones cumplen la misma funciona ahora en el servidor tengo una caja de texto vacia . lo que quiero haces es al pinchar el boton 1 me envie el msgbox en el server y al pinchar el boton 2 me envie el mensaje que ingrese en la caja de texto a la caja de texto del servidor eso.



Para que hago esto:

es para ir separando cosas nose como hacerlo haber si alguien me echa una mano.
__________________
Un saludo y abrazo ... Believe in Your Mind.
Responder Con Cita
  #2 (permalink)  
Antiguo 15-08-2006, 05:12:24
Avatar de vbprog
Gran Participación en el Foro
 
Registrado: ago 2006
Posts: 216
vbprog Valoración +2
Predeterminado

O sino como preguntar si el dato que se envia lo envia boton1 del cliente o el boton2 y haci ir comparando y separando las cosas .
__________________
Un saludo y abrazo ... Believe in Your Mind.
Responder Con Cita
  #3 (permalink)  
Antiguo 15-08-2006, 05:21:46
Avatar de vbprog
Gran Participación en el Foro
 
Registrado: ago 2006
Posts: 216
vbprog Valoración +2
Predeterminado

Haber trate de hacer esto pero tampoco me sale miren:



cliente:

Private Sub Command1_Click()
mensaje = Text1.Text
Winsock1.SendData mensaje
End Sub

Private Sub Command2_Click()
palta = Text1.Text
Winsock1.SendData palta
End Sub

Private Sub Form_Load()
Winsock1.RemotePort = "9797"
Winsock1.RemoteHost = "192.168.0.1"
Winsock1.Connect

End Sub


Servidor:

Private Sub Form_Load()
Winsock1.LocalPort = "9797"
Winsock1.Listen

End Sub

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

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim datos As String
Dim mensaje As String
Winsock1.GetData datos
If datos = palta Then
MsgBox (datos)
Else
Text1.Text = datos

End If

End Sub

Lo que trate de hacer el sendata enviarlos con distintos valores 1 con mensaje y el otro con palta entonces al recibir pregunto si datos = palta has algo sino hace lo otro pero no me resulta =(
__________________
Un saludo y abrazo ... Believe in Your Mind.
Responder Con Cita
  #4 (permalink)  
Antiguo 15-08-2006, 07:49:06
Avatar de acalanto
Moderador
 
Registrado: dic 2002
Ubicación: Madrid
Posts: 4.308
acalanto ha deshabilitado la reputación
Predeterminado

La comunicación entre equipos mediante un puerto es sencilla, pero requiere alguna cosita más de lo que estás haciendo.

En primer lugar por cada conexión que se abre en el servidor, tienes que lanzar un nuevo hilo de ejecución. El control Winsock está diseñado para aceptar conexiones a través de el índice '0' (El servidor necesita un array de winsock) y establecer el tráfico mediante los diferentes canales sockets (Cada uno de los clientes) cargado.

Por otra parte tienes que establecer un protocolo de entendimiento de forma que el servidor sepa que dato recibe, y que debe responder o como debe actuar.


SERVIDOR

EN EL FORMULARIO QUE TIENE EL CONTROL WINSOCK

Código:
Private Sub ServerSocket_ConnectionRequest(index As Integer, ByVal requestID As Long)
    Dim actIndex    As Integer
    Dim strData     As String
    On Local Error Resume Next
    Err.Clear
    If index = 0 Then
        If serverFree.Count <> 0 Then
            actIndex = serverFree(1)
            serverFree.Remove 1
            'Aceptar conexión recuperando hilo
            ServerSocket(actIndex).LocalPort = 0
            ServerSocket(actIndex).Accept requestID
        Else
            idServer = idServer + 1
            actIndex = idServer
            'Aceptar conexión en nuevo hilo
            Load ServerSocket(actIndex)
            ServerSocket(actIndex).LocalPort = 0
            ServerSocket(actIndex).Accept requestID
        End If
    End If
    'preparar cadena de identificación
    strData = "[REQUEST]|" + SysDbPath + ";" + DbPath + ";" + DictField
    sendSERVER actIndex, strData
End Sub
Private Sub ServerSocket_DataArrival(index As Integer, ByVal bytesTotal As Long)
    Dim socketData As String
    On Local Error Resume Next
    DoEvents
    ServerSocket(index).GetData socketData
    releaseSERVER index, socketData
End Sub


EN UN MÓDULO PÚBLICO DEL PROYECTO SERVIDOR

Código:
Option explicit

        'Colección para controlar canales liberados de Winsock
        public Serverfree as collection 

Public Sub releaseSERVER(index As Integer, Data As String)
    Dim items()     As String
    Dim parms()     As String
    On Local Error Resume Next
    items = Split(Data, "|")
    parms = Split(items(1), ";")
    Select Case UCase(Trim(items(0)))
        Case "[REQUEST]" : Sendserver index,"Me has pedido REQUEST"
        Case "[USERDATA]" : Sendserver index,"Me has pedido USERDATA"
        Case "[QUIT]" :  : Sendserver index,"Me has pedido QUIT"
        Case "[SYSDBPATH]" :  Sendserver index,"Me has pedido SYSDBPATH"
        Case ".....más cosas que se te ocurran...."
    End Select
End Sub
Public Sub sendSERVER(index As Integer, Data As String)
    On Local Error Resume Next
    frmPrincipal.ServerSocket(index).SendData Data
    DoEvents
End Sub

Ahora en la parte cliente (tal y como lo tienes) sólo tienes que implementar el mismo protocolo para controlar el tráfico de datos. Fíjate que en este ejemplo utilizo un encabezado seguido de los datos para que servidor y cliente sean capaces de interpretar que cosa le pide la otra parte.

[COMANDO]|datoa;datob;datoc;datoe;...;daton

Además establecer un protocolo te sirve para sincronizar el tráfico de información, de lo contrario puede suceder que aún no habiendo recibido toda la trama, ya estés enviando respuesta, y algo así se traduce en un 'cuelge' de las comunicaciones y pérdida de información.



Espero que te resulte útil.


PD: El código adjunto es un esquema de funcionamiento; debes leeerlo, comprender la técnica y aplicarla en tu aplicación, nunca copiar y pegar porque no será funcional hasta que construyas todo
__________________
Un cordial saludo
-Acalanto-

Madrid - España

Visual Basic
Videos Programacion
Foro Programacion
Tutoriales Programacion
Responder Con Cita
  #5 (permalink)  
Antiguo 15-08-2006, 09:47:40
Avatar de vbprog
Gran Participación en el Foro
 
Registrado: ago 2006
Posts: 216
vbprog Valoración +2
Predeterminado

te pusiste complicado haci lo solucione xD. y lo de la matriz que hiciste es para aceptar mas de una coneccion.

Cliente.
******

Private Sub Command1_Click()
mensaje = Text1.Text
Winsock1.SendData "M" & mensaje
End Sub

Private Sub Command2_Click()
mensaje = Text1.Text
Winsock1.SendData "C" & mensaje
End Sub

Private Sub Form_Load()
Winsock1.RemotePort = "9898"
Winsock1.RemoteHost = "192.168.0.1"
Winsock1.Connect
End Sub


Servidor:
*******

Private Sub Form_Load()
Winsock1.LocalPort = "9898"
Winsock1.Listen

End Sub

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

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim datos As String
Dim Mensaje As String
Winsock1.GetData datos
Mensaje = Mid(datos, 2, Len(datos)) ' captamos solo el mensaje sin los dos primeros caracteres
If Mid(datos, 1, 1) = "M" Then ' si los primeros caracteres son "M " lo mando a msgbox
MsgBox Mensaje
ElseIf Mid(datos, 1, 1) = "C" Then ' si los primeros caracteres son "C " lo mando a textbox
Text1 = Mensaje
Else ' si es diferente
MsgBox "No esta definado el tipo de mensaje"
End If

End Sub

'xD
__________________
Un saludo y abrazo ... Believe in Your Mind.
Responder Con Cita
  #6 (permalink)  
Antiguo 15-08-2006, 10:42:35
Avatar de acalanto
Moderador
 
Registrado: dic 2002
Ubicación: Madrid
Posts: 4.308
acalanto ha deshabilitado la reputación
Predeterminado

Pues si crees que diseñar y escribir código robusto, que funcione sin problemas bajo cualquier ambiente, es ponerse complicado... pues allá tú.

Seguramente los que han escrito los protocolos de TCP, FTP, TELNET estarán tan equivocados como yo. Habrá que informarles urgentemente de su grave error.
__________________
Un cordial saludo
-Acalanto-

Madrid - España

Visual Basic
Videos Programacion
Foro Programacion
Tutoriales Programacion
Responder Con Cita
  #7 (permalink)  
Antiguo 15-08-2006, 18:39:53
Avatar de vbprog
Gran Participación en el Foro
 
Registrado: ago 2006
Posts: 216
vbprog Valoración +2
Predeterminado

Hey trankilo no pretendia ofenderte ,paz y gracias por tratar de ayudar xD
__________________
Un saludo y abrazo ... Believe in Your Mind.
Responder Con Cita
  #8 (permalink)  
Antiguo 15-08-2006, 19:17:04
Avatar de acalanto
Moderador
 
Registrado: dic 2002
Ubicación: Madrid
Posts: 4.308
acalanto ha deshabilitado la reputación
Predeterminado

No me ofendes, en absoluto y tampoco era la intención del mensaje hacerte pensar que estaba ofendido.
__________________
Un cordial saludo
-Acalanto-

Madrid - España

Visual Basic
Videos Programacion
Foro Programacion
Tutoriales Programacion
Responder Con Cita
  #9 (permalink)  
Antiguo 15-08-2006, 19:26:08
Avatar de vbprog
Gran Participación en el Foro
 
Registrado: ago 2006
Posts: 216
vbprog Valoración +2
Predeterminado

ok.
__________________
Un saludo y abrazo ... Believe in Your Mind.
Responder Con Cita
Respuesta


Herramientas
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Trackbacks are habilitado
Pingbacks are habilitado
Refbacks are habilitado


Temas Similares
Tema Autor Foro Respuestas Último Mensaje
Ayuda facil Lester Visual Basic.NET 2003 & 2005 1 05-01-2008 02:06:48
Socket fueguino Visual Basic.NET 2003 & 2005 0 26-06-2007 17:38:08
creo q es facil... vbprog Visual Basic 6.00 3 11-04-2007 22:08:59
Pregunta muy facil ... pero no se la respuesta vbprog Visual Basic 6.00 9 23-10-2006 15:50:04
Duda facil creo pero para mi dificil vbprog Visual Basic 6.00 4 09-10-2006 17:14:26


La franja horaria es GMT. Ahora son las 06:56:12.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0
A vBSkinworks Design

Alojado en el servicio Premium de Masquewebs | Diseño mejorado por MasqueWebs

right