|
Mostrar Temas
|
Páginas: 1 [2]
|
11
|
Programación / Programación Visual Basic / dudas de problemas con winsock
|
en: 18 Septiembre 2006, 03:57 am
|
Hola 2 dudas con winsock. Primero, copie un simple ejemplo en otro ordenador que no hacia casi nada, solo que emplee Winsock y no iba pq faltaba el archivo MSWINSCK.ocx en el ordenador donde lo ejecute. Supongo que puedo copiarlo yo si quiero, pero si se lo tengo que mandar a alguien, tipo troyano, que puedo hacer?. Ahi alguna manera de incluir eso en el exe y que lo instale??. Otra cosa, he echo unas pruebas de conexion CLIENTE/SERVIDOR con winsock tb y el problema es que creo el ejecutable del servidor y del cliente. Lo ejectuo desde el exe ambos y tal y todo bien. Cierro los programas y me doy cuenta que los programas despues de cerrarlos se quedan en memoria. Pq? yo creo que es por que ha abierto los puertos y tal pero no se como hacer para que se cierren y quede todo limpio. Los codigos empleados: Cliente Private Sub cmdconectar_Click() ws.RemoteHost = cmdip.Text ws.RemotePort = 2001 ws.Close ws.Connect Timer1.Interval = 3000 End Sub
Private Sub cmddesconectar_Click() ws.Close End Sub
Private Sub cmdenviar_Click() If ws.State = 7 Then ws.SendData (txtenviar.Text) Else rpt = MsgBox("DEBE ESTAR CONECTADO PRIMERO", vbOKOnly + vbCritical) End If End Sub
Private Sub cmdsalir_Click() End
End Sub
Private Sub Timer1_Timer() If Not ws.State = 7 Then ws.Close ws.Connect lblestado.Caption = "NO CONECTADO" Else End If If ws.State = 7 Then lblestado.Caption = "CONECTADO" Else End If End Sub
Servidor: Private Sub Form_Load() Form1.Visible = True ws.LocalPort = "2001" ws.Close ws.Listen End Sub
Private Sub Timer1_Timer() If Not ws.State = 7 Then ws.Close ws.Listen End If End Sub
Private Sub ws_Close() ws.Close rpt = MsgBox("CONEXION PERDIDA", vbOKOnly) End Sub
Private Sub ws_ConnectionRequest(ByVal requestID As Long) ws.Close ws.Accept requestID rpt = MsgBox("CONEXION ESTABLECIDA", vbOKOnly) End Sub
Private Sub ws_DataArrival(ByVal bytesTotal As Long) Dim datos As String ws.GetData datos rpt = MsgBox(datos, vbOKOnly) End Sub
Gracias y saludos.
|
|
|
12
|
Programación / Programación Visual Basic / como usar winsock, si es posible, para realizar un minichat
|
en: 18 Septiembre 2006, 02:54 am
|
Hola, mi objetivo es hacer una pequeña aplicacion que funcione entre 2 ordenadores por internet y se puedan enviar y recibir archivos. He empleado para ello winsock, pero no me funciona y no se pq. No se si es pq quiza la idea de cliente/servidor para esto es errornea, pues quiza esto que digo seria mas como cliente/cliente, pues se trataria de hacer un ejecutable, el mismo para ambos ordenadores, y realmente me pierdo porque creo que ninguno deberia trabajar como cliente ni servidor... si no a lo mucho ambos como cliente. Pero no me funciona y no se si es pq no se puede hacer mediante winsock o es que lo ago mal. Entonces aber si me podeis ayudar o guiarme o decirme si es que necesito hacerlo con otro control distinto a winsock, que parece mas encaminado a eso, cliente servidor, osea el cliente hace una peticion y el servidor la devuelve si puede... Private Sub cmdconectar_Click() On Error Resume Next ws.RemoteHost = "10.0.0.3" 'meter al ip buena ws.RemotePort = 2001 ws.Close ws.Connect If Not ws.State = 7 Then ws.Close ws.LocalPort = "2001" ws.Close ws.Listen Label1.Caption = "ESCUCHANDO" End If
End Sub
Private Sub cmdenviar_Click() ws.SendData txttexto.Text End Sub
Private Sub Form_Load() nombre = InputBox("Introduce tu nombre de sesion:", "Bienvenido...") If nombre = 1 Then RemoteHost = "10.0.0.3" ElseIf nombre = 2 Then RemoteHost = "10.0.0.3" End If Form1.Caption = nombre & RemoteHost End Sub
Private Sub Timer1_Timer() If Not ws.State = 7 Then ws.Close ws.Connect End If
End Sub
Private Sub ws_ConnectionRequest(ByVal requestID As Long) ws.Close ws.Accept (requestID) Label1.Caption = "CONECTADO"
End Sub
Private Sub ws_DataArrival(ByVal bytesTotal As Long) Dim datos As String ws.GetData datos rpt = MsgBox(datos, vbOKOnly) End Sub
Explico lo que he exo, no se si lo abre dejado con algo raro pq ya de tantas pruebas no se. Primero cuando carga el formulario pregunta un nombre. Por defecto he puesto 1 y 2 como respuestas para asignar una Ip a la que se conectara. Mas que nada de momento he exo eso para ver si podia yo hacer las pruebas en mi propio ordenador y asignando la misma IP. He puesto la misma IP pq haciendo pruebas anteriroes con Winsock vi que podia hacer un cliente y un servidor y desde mi propio ordenador conectarme del cliente al servidor, entonces deduje que aqui tb podria usar la misma IP. Bien a continuacion abria en el formulario un boton cmdconectar que lo que hace es lo siguiente: Primero trata de conectarse a la ip y al puerto que le digo. Entonces comprueba el estado de la conexion y si es no conectado, lo que hace es que se queda a la espera, osea a la escucha, para ello abre el puerto y se mantiene a la espera. De tal manera, que si abro otra vez la misma instancia del exe, y le doy a conectar, al estar el otro a la escucha en el puerto, pues esta vez la primera parte del codigo funcionaria y se conectaria. Luego esta el procedimiento de que acepta la conexion, y como digo parece que todo va bien, pero es que el problema que veo es que es como si todo fuera en un sentido , y no en los dos, pq solo el procedimiento de DataArrival se produce en uno de los prograamas. Bien luego tengo un texbox donde se pondria el texto a enviar y un boton de enviar. Ademas deun label que dice el estado de la conexion. Entonces escribo en el textbox y de momento antes de ponerme a meterlo en un picturebox, lo que he exo es que ese dato enviado aparezca en pantalla mediante un msgbox... pero como digo no me funciona. Podeis ver el fallo o que pasa?. Muchas gracias. Saludos.
|
|
|
13
|
Programación / Programación Visual Basic / manera de operar con funciones
|
en: 16 Septiembre 2006, 21:09 pm
|
Hola, aber, resulta que estoy haciendo unas pruebas y me encuentro con un problema. Yo vengo de programar en Visual Lisp. Ahi, se puede operar de una manera tal, que para yo puedo agrupar muchas funciones y obtener un solo resultado. Pongamos por caso que yo quiero en Visual Lisp decir que si una tecla es pulsada en minuscula, me de el resultado en mayuscula. Yo lo haria asi: (setq letra (strcase (chr 97))) esto en VL se ejecuta por parentesis de dentro hacia fuera. El 97 representa la letra a pulsada en este caso, entonces primero transformaria ese codigo ascii en letra, y despues con strcase la pone en mayuscula, y lo guarda en la variable Letra. Con lo cual ese es el resultado final "A" y he agrupado dos funciones Strace y Chr para obtener la "A" viniendo de "a". Bien, ahora me planteo que estoy en visual basic. Creo un textbox. Y mi objetivo que cuando se escriba sobre el, transforme esa letra automaticamente en mayuscula, mediante el evento Keydown. Bien, empleando la tecinca de visual lisp puse esto: Text9.Text = UCase(Chr(KeyCode)) pensando que se procesiarai primero el chr (keycode) y transformaria el codigo ascii que recibe de la letra a caracter, y luego lo pasaria por el Ucase que lo pone en mayuscula, pero a la hora d ejecutar el programa, escribo y me devuelve la letra que he pulsado en minuscula y mayuscula, con lo cual deduzco que lo que pasa es que da como resultado las dos funciones que he empleado, una me devuelve la letra pulsada osea que chr (keycode) y luego el Ucase. De manera que como haria yo, o cual es la forma mas rapida y practica de hacer esto. Entiendo que podria crear una variable, ejecutar primero el chr guardarlo en la variable y volver a ejecutar el ucase para que lo vuelva a guardar en la variable no? pero no kreo que sea la forma mas rapida. No se... alguien me ayuda? y sobre todo que me digan cual es la forma de agrupar varias funciones para que obtenga un resultado, si es posible. Gracias y saludos.
|
|
|
14
|
Programación / Programación Visual Basic / problema de estructuracion
|
en: 15 Septiembre 2006, 11:27 am
|
Hay algo que no entiendo en VB6. Por ejemplo... creo un menu tipico con el menu editor, y lo oculto. El objetivo es que usar el Popupmenu, osea que pulsando sobre cualquier parte del formulario con el boton derecho, emerga este menu, llamdo mnuarriba, x ejemplo. Bien, edito el procedimiento del formulario en mouse down. Y le pongo que si: if button = 2 then 'osea si el boton empleado es el 2, derecho Popupmenu 'entonces cuando pongo esto, VB automaticamente detecta Popupmenu como funcion y me va poniendo su estructura, dentro de un parentesis. asi: (menu as object, Flag, x, Y, defaultmenu). Con lo cual yo escribo: PopupMenu (mnuarriba) pq el resto d opciones no quiero poner nada... y asi ejecuto el programa y me falla, dice: type mismatch sin embargo si pongo esto, funciona correctamente: PopupMenu mnuarriba osea sin parectesis Pq funciona sin parentesis, y pq no con parentesis cuando VB me dice que debo meterlo en parentesis. Y esto mismo me ha pasado con otras funciones, y no entiendo pq... quiza pq solo uso un argumento??? si usase mas deberia ponerlo en parentesis? o pq? Saludos y gracias. ps: x supuesto en mis pruebas cierro el if.
|
|
|
15
|
Programación / Programación Visual Basic / common dialog, guardar resulado
|
en: 14 Septiembre 2006, 13:50 pm
|
Hola, como se maneja el resultado optenido por el control Common Dialog? Por ejemplo, pongo en el evento click cmdopen.showopen y eligo un archivo y me devuelve al formulario pero si he elegido un archivo, como lo guardo? he tratado de guardarlo en una varible pero me falla. rpt = cmdopen.showopen o un color, o cualquier resultado del control, no se como guardarlo para poder usarlo. Gracias.
|
|
|
16
|
Programación / Programación Visual Basic / alguien me hace un fake sencillisimo en VB
|
en: 3 Agosto 2006, 11:44 am
|
Hola, aber si alguien me podria hacer un programita que emulase lo siguiente: -Una especie de programa cuya funcion fuese la de activar la webcam de alguien que estuvieras ablando por el msn sin que este lo sepa. -El programa deberia de ser capaz de hacer esto tan solo ejecutandolo, teniendo el msn puesto, y metiendo algunos datos para que tampoco resulte ser facilisimo, como por ejemplo mail de la persona en cuestion. Quiza IP de esa persona... algunas cosillas asi. -Una vez rellenados los campos, y pulsar un boton para supuestamente activar la cam, que de un mensaje de error en el cual diga algo asi como que este programa no puede correr con la version actual del msn de la victima o que esa persona no esta conectada en ese momento. Este seria el planteamiento. Para que? pues para mandar esto mezclado con un troyano y que la persona no sospeche. De VB se mu poquito, pero lo poco que se es para saber que esto es facil de hacer y que si alguien quiere ayudarme no le llevara mas de 5 minutos. Alguien me ayuda? Logicamente como he dicho todo es falso, solo que la persona ha de creer que es verdadero. Gracias y S2. ps: me podria incluir el archivo complilado y el codigo para ver como esta echo. Gracias.
|
|
|
|
|
|
|