problemas con winsock1

Iniciado por rembolso, 13 Enero 2009, 14:28 PM

0 Miembros y 1 Visitante están viendo este tema.

rembolso

hola
e tenido problemas ultimamente con el winsoc1 de vb el cliente se conecta perfectamente al servidor pero cuando hago la  siguiiente hacion el server no responde
cliente  ejemplo
(cmd8)
dim dat
dat =  File1.Path & "\" & File1.FileName

winsock1.sendata  "t#" & dat

haora viene el problema
servidor :-X

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

Select Case datos
Case "t#"

Kill (datos)

End Select
end sub

el sevidor no responde a la acion no lo borra al archivo selecionado 


si me podria ayudar



seba123neo

Hola, lo que llega no es "t#" sino "t#" & dat,por eso nom debe entrar en el select case... proba decirle que si en la cadena encuentra el t# que haga eso...o sea usa InStr...

PD:Hombre este problema se soluciona en 1 segundo si sabes debuggerar el codigo fuente...fijate que valor tiene datos y listo...

saludos.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

rembolso

a ok de la forma q me decis seria haci
servidor  :huh:

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

Select Case datos                        'no funca  :-( :-(
Case "t#" &dat

Kill (datos)

End Select
end sub

e provado de otra forma
-----------------------------------------------------------
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim Tempdata As String
Winsock1.GetData Tempdata
    Select Case Left(Tempdata, 10)
     Case "1#" &dat                'no funca
       Tempdata = Mid(Tempdata, 11, Len(Tempdata))
kill  Tempdata

End Select
o otra forma
---------------------------------------------------------------------------
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim Tempdata As String
Winsock1.GetData Tempdata
    Select Case Left(Tempdata, 10)             'tampoco funca
     Case "1#"
       Tempdata = Mid(Tempdata, 11, Len(Tempdata))
  kill    Tempdata

End Select
me lo podrias hacer un ejemplo y subirlo a megaunload o donde quieras   ;D
saludos

cassiani

Hay varias formas de hacerlo, lo que sucede es que no sigues el flujo de los datos, como te dicen, el valor que toma la variable "Datos" a la hora de hacer el selec case.

Código (vb) [Seleccionar]
Dim Datos$
    'Cuando el servidor lo recibe, este es el supuesto valor que toma la variable Datos
    Datos = "t#c:\...\archivo.extensión"
    Select Case Mid(Datos, 1, 2)
        Case "t#"
            Debug.Print Mid(Datos, 3)
    End Select


La forma que apliques dependera de si "t#" es un indicador o no y los diferentes casos que se te puedan ocurrir.

http://www.recursosvisualbasic.com.ar/htm/tutoriales/tutorial-basico5.htm#left-mid-right

rembolso

aun haci sigo sin entender  :rolleyes:
toy un poco mariado jajaj
seria haci
cliente :
winsock1.sendata "t#" &text1.text

server
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
dim data1 as string
winsock1.getdata dato
DoEvents
Select Case Mid(data1, 1, 10)
case "t#"
MsgBox Mid(data1, 11, Len(data1))
end select
end sub

cassiani

CitarPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
dim data1 as string     --> o.O
winsock1.getdata dato --> ????????
DoEvents
Select Case Mid(data1, 1, 10)
case "t#"
MsgBox Mid(data1, 11, Len(data1))
end select
end sub

data1 o dato  :huh:, no es lo mismo.  :-\

vivachapas

ayy q manera de complicarse la vida xD

Código (vb) [Seleccionar]
dim dat
dat =  File1.Path & "\" & File1.FileName

winsock1.sendata  "t#" & dat


haora viene el problema
servidor

Código (vb) [Seleccionar]
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim datos As String
Winsock1.GetData datos

Select Case datos
Case "t#"

Kill (datos)

End Select
end sub



el problema ahi es lo q te explico seba...

vos estas mandando esto por ejemplo: t#C:\Archivo.txt

pero cuanod esto llega al cliente, nunca entra en el case... x datos es igual a t#C:\Archivo.txt y no a t#

lo q podes hacer ahora es esto... sin modificar el servidor, solamente cambiar a esto en el cliente

Código (vb) [Seleccionar]
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim datos As String
Winsock1.GetData datos

Select Case Left(datos,2)
Case "t#"

Kill (Right(datos, Len(datos) - 2)

End Select
end sub



----------------------
ahora:
CitarSelect Case datos                        'no funca   
Case "t#" &dat

eso no funca xq
Citar"t#" &dat
&dat = Null... no es nada.. nunca declaraste nada con dat...

---------------------
desp lo q puso Cassiani esta bien... es mas o menos lo q te explique yo mas arriba...

y despues lo q volviste a publicar

Código (vb) [Seleccionar]
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
dim data1 as string
winsock1.getdata dato
DoEvents
Select Case Mid(data1, 1, 10)
case "t#"
MsgBox Mid(data1, 11, Len(data1))
end select
end sub


esta mal xq vos declaras la variable
Código (vb) [Seleccionar]
data1 pero desp llamas para q reciba los datos a
Código (vb) [Seleccionar]
dato y finalmente lees nuevamente la primer variable q nunca modificaste (solo la declaraste)

bue espero q hayas entendido... estoy al dope x eso me puse a explicar un poco este lio q se armo xD..

SALUDOS

cassiani

Algo que se me escapo,
CitarSelect Case Mid(data1, 1, 10)

Si haces eso extraerás 10 caracteres (donde se marca en rojo, es el número de caracteres a extraer) y a la hora de hacer la comparación, no entrara al case que colocas porque la cadena de condición solo tiene dos caracteres. ¿Me explico?

Ese enlace que te había colocado es para que lo leas, hay te explican muy bien el uso de esas funciones, lo demás es lógica.

Saludos

rembolso


vivachapas esta forma
Citar
Código (vb) [Seleccionar]
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)

Dim datos As String
Winsock1.GetData datos

Select Case Left(datos, 2)
Case "t#"
Kill (Right(datos, Len(datos)) - 2)

End Select
end sub


me dise error:
run-time error "13":
type mismatch

y me señala esto
Kill (Right(datos, Len(datos)) - 2)





toy mas perdido q tarzan en el centro  :rolleyes:

seba123neo

el -2 esta fuera del parentesis...
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson