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
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.
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
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.
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
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
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. :-\
ayy q manera de complicarse la vida xD
dim dat
dat = File1.Path & "\" & File1.FileName
winsock1.sendata "t#" & dat
haora viene el problema
servidor
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
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
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
data1
pero desp llamas para q reciba los datos a
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
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
vivachapas esta forma
Citar
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:
el -2 esta fuera del parentesis...
ok gaxcias el problema ya lo solucione
haci quedo
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
'Declaramos la variable que recibirá los datos
Dim data1 As String
'Tomamos los datos que nos envían
Winsock1.GetData data1
DoEvents
'separamos el String y determinamos que accion nos está mandando el Cliente
Select Case Mid(data1, 1, 10)
Case "#MENSAJE##"
Kill Mid(data1, 11, Len(data1))
End Select
End Sub