Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - mastercss

#21
Se que se puede hacer con pipes pero mi nivel de programación no me permite hacerlo asi. Mi pregunta es si alguien lo ha haxo de la manera que lo intento hacer que me diga que está mal.


Salu2
#22
Bie me dispuse ha hacer una shell remota con el comando shell "cmd.exe /c .....". Estoy desesperado no entiendo el motivo del fallo del codigo. El caso es como si el server no recibiera el comando. Lo posteo para que lo vean:


SERVIDOR:


Código (vb) [Seleccionar]
Private Sub Form_Load()
Text1.Text = ""
Text2.Text = ""
Winsock1.Protocol = sckTCPProtocol
Winsock1.LocalPort = 3000
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 comando As String
Dim a As Integer
Winsock1.GetData comando
Text1.Text = comando
Shell ("%windir%/system32/cmd.exe /c " & Text1.Text & ">%windir%/shell.txt"), vbHide

End Sub


De moemtno solo busco que funcione no que me devuelva la respuesta.

CLIENTE:

Código (vb) [Seleccionar]
Private Sub Command1_Click()
Winsock1.Close
Winsock1.RemotePort = 3000
Winsock1.RemoteHost = Text1.Text
Winsock1.Connect
End Sub

Private Sub Command2_Click()
Dim comando As String
Text4.Text = comando
Winsock1.SendData comando
Text4.Text = ""
End Sub

Private Sub Form_Load()
Text1.Text = ""
Text2.Text = ""
Text4.Text = ""
Label3.Caption = "Desconectado"
Winsock1.Protocol = sckTCPProtocol
End Sub

Private Sub Text2_Change()

End Sub

Private Sub Text4_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then Command2_Click
End Sub

Private Sub Winsock1_Close()
Label3.Caption = "Desconectado"
Text2.Text = Text2.Text & vbCrLf & "Se ha perdido la conexión con el host remoto"
End Sub

Private Sub Winsock1_Connect()
Label3.Caption = "Conectado"
Text2.Text = "Conectado con exito a " & Winsock1.RemoteHostIP
End Sub


Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim datos As String
Winsock1.GetData datos
Text3.Text = Text3.Text & vbCrLf & datos
End Sub



Gracias por adelantado. Espero sus respuestas. Salu2
#23
VEran esta libreria me seria muy util para poder establecer sesiones http por medio de programas hechos en basic. He visto todas las apis de este post http://foro.elhacker.net/programacion_visual_basic/declaraciones_de_wininet-t85007.0.html

Sinceramente no me solucionan nada y no me mal interpreten se agradece la ayuda. El caso es que necesitaria algun tipo de tutorial sobre esta libreria. He visto algo sobre wininet para conseguir el codigo fuente de una web y cosas por el estilo pero necesitaria algo mas de información. Muchas gracias



Salu2
#24
Programación Visual Basic / Ayuda con codigo
27 Enero 2010, 01:39 AM
En primer lugar, no sabia si debia crear un post nuevo o volver a postear en el que pedi ayuda con el chat. Agradeceria al admin que me lo aclarara para asi no estorbar. Este codigo lo que quiero que haga es apagar un ordenador de forma remota. He visto que la API ExitWindowsEx se utiliza con una sintaxis especial. Posteo el codigo y comento mejor:

Cliente:

Código (vb) [Seleccionar]
Option Explicit
Private Sub Command1_Click()
Winsock1.RemotePort = 9000
Winsock1.RemoteHost = Text1.Text
Winsock1.Connect
End Sub

Private Sub Command2_Click()
Dim apagar As Long
apagar = 1
Winsock1.SendData apagar
End Sub


Private Sub Command3_Click()
Dim reiniciar As Long
reiniciar = 2
Winsock1.SendData reiniciar
End Sub


Aqui lo que hago es asiganrle el valor 1 a apagar y a reiniciar 2. Por qué? Porque asi con una instruccion condicional en el servidor podre establecer lo que quiero que haga (corrijanme si esto no se puede hacer).

Servidor:
Código (vb) [Seleccionar]

Option Explicit
Const EWX_LOGOFF = 0
Const EWX_SHUTDOWN = 1
Const EWX_REBOOT = 2
Const EWX_FORCE = 4
Private Declare Function ExitWindowsEx& Lib "user32" (ByVal uFlags&, ByVal dwReserved&)

Private Sub Form_Load()
Winsock1.LocalPort = 9000
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 Long
Winsock1.GetData datos
If datos = 1 Then datos = ExitWindowsEx(1, 0&)
If datos = 2 Then datos = ExitWindowsEx(2, 0&)
End Sub


EL servidor es sencillo, establezco el puerto de escucha acepto la conexion y recibo los datos. La duda viene a continuación. En el evento DataArrival recibo los datos y les asigno como variable datos, luego estblezco una condición para que dependiendo del valor de la cadena de datos que entre reinicie o apague.
PEro señores el codigo no funciona, compila bien y todo eso pero cunado aprito en apagar x ejemplo no se apaga. No salta ningun error ni nada pero no funciona. Espero me puedan decir cual es el error en el code. Grcias de nuevo.
#25
Nada todo solucionado xd. La verdad esque hayer por la noxe estaba muy encabezonado y no rendia. Haber a lo que me referia era que ubiera un salto de linea entre mensaje y mensaje, porque si yo decia "ola que tal??", primero "ola" y luego "k tal??", me salia olaketal??. Se soluciona con un parametro de basic, vbcrlf al final.

Ademas he añadido una funcion. La de keypress para que cunado presionen intro el mensaje se envie y ademas borre la caja de texto. Si kieren pongo el codigo e el post para que vean como ha kedado.


Salu2 y gracias a todos
#26
Ya lo solucione y gracias por sus respuestas. El error era uy simple y nadie se dio cuenta xd. Rsulta que en el cliente en vez de establecer el puerto remoto al que conectarme (winsock1.remotehost) puse el puerto local xd(winsock1.localport). Con razón no funcionaba. Joder y yo sin  entender lo de los sokets, jajjaa, ya me vale.
Muchas gracias gente.


Salu2


P.D: Como hago para que haya un espacio entre mensaje y mensaje enviado me refiero que cuando lo envie se vea separado por espacio como en el ejemplo. Esk me sale todo de seguido lo que reciben las dos txtbox.

Servidor:ola
Cliente ola
#27
Haber si entiendo, no puedo escuchar por el mismo puerto por el que envio datos?Un poko raro no???xd
NO me entero de na
Si no es mucha molestia podrias señalar en el code lo que dices que esta mal???plz seria de gran ayuda


salu2

P.D:Para el que tenga dudas e esto me base pa hacer el code:

http://www.elguruprogramador.com.ar/articulos/aplicaciones-cliente-servidor-en-visual-basic-utilizando-el-control-winsock.htm
#28
El caso eske el codigo fuente esta cambiado al manual que vi pero basicamente es lo mismo. He podido observar por otros codes que he visto que el problema se encuentra en conection request. Resulta que en conection request en otros codecs establecen de nuevo winsock1.localport en 0 y vulven a aceptar la conexion entrante no si si sera este el error. La verdad esk me toy liando un poko.


Salu2
#29
Una pregunta como es que no pueden enviar por el mismo socket, me refiero, la salida de datos tiene que ser enviada por un puerto distinto que la entrad de datos???

No entendi bien.

Gracias y salu2
#30
No sale xd. Esque es lo que pas cuando trabajas con el entorno de basic xd.


Salu2 y gracias