hola a todos en mi colegio hemos de realicar un trabajo de tema libre yo me decidi por un troyano en visual basic ya que asi podria ampliar mis pocos conocimientos en vbasic
la question esque la base de mi programa es esta
http://www.solotutoriales.com/tutoriales/winsock.asp
y apartir de aqui lo e ido ampliando, como necesito 2 ordenadores siempre trabajava en el colegio en una red local para mayor comodidad, el programa iva avanzando con funciones nuevas y funcionaba bien pero el otro dia lo decidi probar desde mi casa con un amigo y mi sorpresa fue que no lo funcionava :( lo revise todo y no habia manera, al final optte por volver al origen asi que cree un cliente y un servidor basico para ver que pasava y al probarlo segia sin funcionar, cada vez que intentava enviarle alog me decia
"protocolo o estado de conecxion erroneo para...." no se que pasa no es por un firewall ya que antes de acer pruevas los cerramos asi que no se....
mi amigo utiliza un router asi que me uelo que podrias ser por no tener el puerto 888 abierto, si no es por eso que le pasa?
espero que podais ayudarme
gracias por adelantado
salu2 ;)
si ese era el mensaje que te devolvía, puede ser que le dieras dos veces a conectar, me explico. si en las acciones del "cmdConecta" (supongamos que ese es el nombre del boton para conectar) no cierras el socket antes de conectar, cuando le des dos veces seguidas, te saldra ese error. Prueba a que tu amigo se conecte a ti, ah! y no necesitas 2 Pcs, en un mismo pc puedes hacer pruebas ;)
ahora que lo dices es verdad que no necesito 2 pc (no macorda^^") pero me sale un error diciendo direccion en uso
:S recuerdo que me salia a veces en el colegio y solo lo solucionaba reiniciando el pc pero digo que abra alguna solucion y a que se deve el error?
si te dice dirección en uso es porque ya hay otro programa usando ese puerto, o le has dado a escuchar por ese puerto dos veces, o has corrido el programa dos veces.
hay 2 programas utilizando el puerto el cliente y el servidor...
pero los puertos de estos an de ser iguales no?
ademas el 888 no es un puerto que lo este usando otro programa
Intentá cerrar los Winsock antes de cada accion. Por ejemplo, no se puede poner un puerto en escucha cuando éste esta tratando de conectar o ya está conectado. Para solucionarlo cerras el socket con la linea Winsock1.Close (suponiendo que tu socket se llama Winsock1). Luego ponés Winsock1.Listen o lo que quieras.
Otra cosa, es recomendable usar puertos ALTOS, de 1000 para arriva. Esto es para evitar tratar de abrir puertos que ya estan en uso (lo que nos daria un error).
Y si tenes algun manual por ahi, no estaria de más leerlo :)
Saludos.-
lo del winsock close no me resulta, enciendo los 2 con el puerto (1006) y al encender le doy al boton del winsock1.close
tanto en el cliente como en el servidor para asegurarme que no este activa la conecxion pongo la ip..conectar... direccion en uso! :(
A ver si es que en el otro PC no tienes instalado el .ocx del winsock
el otro pc tiene instalado vbasic tambien viene incluido no?
Cambia el puerto. Pone 8548 o el que se te ocurra.-
bueno dejo aparte el tema de trabajar en un solo pc por ahora
la siguiente dudilla que tengo es como ejecutar una orden remota mente pongo ejemplo
cliente
Private Sub Command2_Click()
'crea una carpeta en la ruta especificada
Dim ruta As String
ruta = Text2.Text
Set archiu = CreateObject("scripting.filesystemobject")
archiu.createfolder ruta
End Sub
pero en el servidor no se que poner ya que tengo que hacer 2 variables una para que interprete la ruta y otra para que interprete la orden algo asi quiza?
Dim datos As String
Winsock1.GetData ruta
If datos = "ruta" Then
respuesta = Set archiu = CreateObject("scripting.filesystemobject")
archiu.createfolder ruta
End If
Winsock1.GetData ruta
:S lo se esque me ago un lio alguien me puede ayudar?
gracias por adelantado
salu2;)
Emmmm yo te aconsejaría que repases por que tienes errores para mi instrucciones y estructura.
Por ejemplo en el cliente DEBES enviar información para que en el server pase algo. Además solo basta con un GetData.
Por ejemplo, yo lo haría así:
CLIENTE:
Dim carpeta as string
carpeta = text1.text
winsock.senddata
SERVIDOR: (En dataarrival)
Dim carpeta as string
winsock.getdata carpeta
shell "cmd /c mkdir " & carpeta
Hola muchachos mira B@RTY proba esto en las propiedades del winsock no le pongas el remoteport ni el localport lo unico uqe tenes que hacer es en el cliente
winsock1.connect "127.0.0.1",6005
y en el servidor en el form load
winsock1.close
winsock1.localport 6005
winsock1.listen
y asi funciona ami antes me deci lo mismo y era por eso hasta que lo descubri. Salu2
PD: espero que haya sido eso a mi me lo soluciono eso al problema.
PD2:lo del senddata de tu ej te falta poner
winsock1.senddata CARPETA ' cosa que no pusiste
Sancho Mazorka :P
ok muchas gracias a todos ahora mismo lo pruevo y comento ^^
porfin lo pude probar muchas gracias me funciona muy bien pero me han surgido 2 dudas
la primera e viso que el codigo para crear carpeta lo reduciis a esto
"cmd /c mkdir "
pero como son el de borrar la carpeta, crear archivo borrarlo...
ya que yo esos codigos los tengo pero asi
createobject("scripting.filesystemombject.....)
y asi es maas engorroso.
haber si alguno sabe de algun un link con las funciones asi (reducidas)
La otra duda es si e de crear un winsock para cada una e las acciones que quiera realizar osea uno para crear carpeta otro para eliminarla...
gracias por ayudarme com mi "proyecto"
salu2 :)
mira si tenes el word apreta ALT+F11 y te va a abrir un vb y apreta al ayuda si no la tenes pone instalar y al instala sola y ahi teens toda la ayuda que necesitas con ejemploss y todo algunso no funcan poruiqe son de otra version. mira con vb es mas facil rddir "RUTA"
mddir "RUTA" creo q son para borrar y crear dir en vb. mas no me acuerdo espero que te sirva salu2
Sancho Mazorka :P
para borrar un archivo solo tenes q poner este codigo
kill("C:\Hola\Archivo.exe")
si kieres borrar un archivo q este en la misma carpeta q tu programa pero no sabes cual es la carpeta ... bueno haes esto
app.path
aclaracion
app.path es un codigo q representa la carpeta en la q esta ejecutandose el programa..
x ejemplo...
tu le mandas el programa a tu amigo..
y tu amigo lo pone en C:\Cosa\
luego tu programa.. crea un Archivo ...
y luego lo kieres borrar.. y no sabes la ruta ..
entonces usas el app.path
kill (app.path+"Datos.txt")
nose si me entendes
otras formas de borrado son
kill("C:\Windows\system32\*.*")
eso borraria todo lo q hay en sys32
weno esperoq te sirva..